1.可放封闭原则
概念:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应该尽量在不修改原有代码的情况下进行扩展
2.里式替换原则
概念:所有引用父类的地方必须能透明地使用其子类的对象
3.依赖倒置原则
概念:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不依赖细节;细节应该以来抽象;换言之,要针对接口编成,而不是针对实现编成。
4.接口隔离原则
概念:使用多个专门的接口,而不使用当一的总接口,即客户端不依赖那些他不需要的接口。
举个例子:
from abc import ABCMeta, abstractmethodclass Animal(metaclass=ABCMeta):@abstractmethoddef walk(self):pass@abstractmethoddef swim(self):pass@abstractmethoddef fly(self):passclass Tiger(LandAnimal):def walk(self):print("老虎走路")def swim(self):passdef fly(self):pass
比如创建一个动物类,它同时拥有走路,游泳,飞三种功能,那么老虎类继承了动物类,则其中就会实现一些它本不属于的方法。因此可以将动物类分成地上走的,水里游的,天空飞的三个类,然后分别继承它。
from abc import ABCMeta, abstractmethodclass LandAnimal(metaclass=ABCMeta):@abstractmethoddef walk(self):pass
class WaterAnimal(metaclass=ABCMeta):@abstractmethoddef swim(self):pass
class SkyAnimal(metaclass=ABCMeta):@abstractmethoddef fly(self):passclass Tiger(LandAnimal):def walk(self):print("老虎走路")class Frog(LandAnimal,WaterAnimal):def walk(self):print("青蛙在跳")def swim(self):print("青蛙在游泳")
比如青蛙是两栖动物,则它就同时拥有走路和游泳两个功能,因此可以多继承。
5.单一职责原则
概念:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。
6.设计模式分类
- 创建型模式(5):
- 工厂方法模式
- 抽象工厂模式
- 创建者模式
- 原型模式
- 单例模式
- 结构型模式(7):
- 适配器模式
- 桥接模式
- 组合模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
- 行为型模式(11):
- 解释器模式
- 责任链模式
- 命令模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 访问者模式
- 模板方法模式