1、设计模式简介
- 设计模式:对软件设计中普遍存在的反复出现的各种问题所提出的解决方案,每个设计模式系统的命名、解释和评价了面向对象系统中的一个重要的和重复出现的设计
- 设计模式的提出人:GoF:即:
Erich Gamma, Richard Helm, Ralph Johnson, Jon Vissides
2、面向对象
- 面向对象的三大特性:封装、继承、多态,在python中不需要关注多态,python天然支持
- 接口:若干抽象方法集合
接口的作用:限制实现接口的类必须按照接口给定的调佣方式实现这些方法,对高层模块隐藏了方法的具体实现
在python中使用接口的方式代码如下:Person类即定义接口的类,定义了两个接口,子类Students继承Person类,此时Person类必须按照接口的定义去实现
from abc import ABCMeta,abstractmethod
class Person(metaclass=ABCMeta):
@abstractmethod
def get_name(self):
pass
@abstractmethod
def set_name(self,name):
pass
class Students(Person):
def __init__(self):
self.__name=""
def get_name(self):
return self.__name
def set_name(self,name):
self.__name=name
if __name__=="__main__":
s=Students()
s.set_name("Tom")
print(s.get_name())
执行结果如下:
Tom
3、对象对象设计的SOLID原则
- 开放封闭原则:
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭,即软件实体应尽量在不修改原有代码的情况下进行扩展 - 里氏替换原则:
所有引用父类的地方必须能透明地使用其子类的对象 - 依赖倒置原则:
高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该细节,细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程 - 接口隔离原则:
使用多个专门的接口,而不使用单一的总接口,及客户端不应该依赖哪些不需要的接口 - 单一职能原则:
不要存在多于一个导致类变更的原因,通俗一点说,即一个类只负责意向职责
4、设计模式分类
- 创建型模式(5中):
工厂方法模式、抽象工厂模式,创建者模式,原型模式,单例模式 - 结构型模式(7种):
适配器模式、桥模式、组合模式、装饰器模式、外观模式、享元模式,代理模式 - 行为型模式(11种):解释器模式,责任链模式,命令模式,迭代器模式,中介者模式,备忘录模式,观察者模式,策略模式,访问者模式,模板方法模式