内容概要
一、什么是设计模式
二、接口
三、面向对象设计的SOLID原则
四、设计模式的归纳命名
1、什么是设计模式
设计模式是对软件开发过程中普遍出现的各种问题,进行的解决方案。每一个设计模式都是系统的命名、归纳、解释和评价了面向对象系统种一种重要的重复出现的设计。
简单的理解,就是每个设计模式是对不同问题解决方法的归纳
2、接口
接口规定了它子类的格式。
from abc import ABCMeta, abstractmethod # 定义一个抽象类(接口) class Payment(metaclass=ABCMeta): @abstractmethod # 抽象方法 def pay(self, money): pass class WeChatPay(Payment): # 继承了Payment的子类必须实现接口规定的pay方法 def pay(self, money): # 并且参数必须保持一致 print("微信支付了{}元".format(money)) class ZhiFuBaoPay(Payment): def pay(self, money): print("支付宝支付{}元".format(money)) pay1 = WeChatPay() pay1.pay(100)
3、面向对象设计的SOLID5大原则
(1)开放封闭原则:一个软件实体如类、模块和函数都应该对扩展功能开放,对代码修改关闭。即软件实体应该在尽量不修改源代码的基础上拓展功能。
(2)里氏替换原则:所有引用父类的地方必须可以透明的引用其子类的对象。
(3)依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖于细节,细节应该依赖于抽象。
(4)接口隔离原则:使用多个专门的接口,而不使用一个总接口。即客户端不应该依赖其不需要使用的接口。
(5)单一责任原则:只允许最多一种因素影响到类的变更。即一个类只负责一个职责。
from abc import ABCMeta, abstractmethod
# 定义一个抽象类
class Payment(metaclass=ABCMeta):
@abstractmethod # 抽象方法
def pay(self, money):
pass
class WeChatPay(Payment): # 继承了Payment的子类必须实现pay方法
def pay(self, money): # 并且参数必须保持一致
print("微信支付了{}元".format(money))
class ZhiFuBaoPay(Payment):
def pay(self, money):
print("支付宝支付{}元".format(money))
pay1 = WeChatPay()
pay1.pay(100)