接口
什么是接口:接口就是实现了若干抽象方法的集合。
接口的作用:限制实现接口的类必须按照接口给定的调用方式实现这些方法;对高层模块隐藏了类的内部实现。
from abc import ABCMeta, abstractmethod
class Payment(metaclass=ABCMeta):
@abstractmethod
def pay(self, money):
pass
class AliPay(Payment):
def pay(self, money):
print(f"ali pay {money} yuan")
class WechatPay(Payment):
def pay(self, money):
print(f"wechat pay {money} yuan")
Payment.pay() 就可以理解为是一个接口。像AliPay
或者WechatPay
这种上层应用,必须按照接口规定去实现这些方法。
面向对象设计的SOLID原则
- 开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
- 里氏替换原则:所有引用父类的地方必须能透明地使用其子类的对象。
- 依赖倒置原则:高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程。
- 接口隔离原则:使用多个专门的接口,而不使用单一的总接口,即高层模块不应该依赖那些它不需要的接口。
- 单一职责原则:不要存在多于一个导致类变更的原因,即一个类只负责一项职责。