python 抽象类、抽象方法、接口、依赖注入、SOLIP,,1、程序设计原则:S
python 抽象类、抽象方法、接口、依赖注入、SOLIP,,1、程序设计原则:S
1、程序设计原则:SOLIP
SOLIP设计原则
1、单一责任原则(SRP)
一个对象对只应该为一个元素负责
2、开放封闭原则(OCP)
对扩展开放,修改封闭
3、里氏替换原则(LSP)
可以使用任何派生类替换基类
4、接口分离原则(ISP)
对于接口进行分类避免一个接口的方法过多
5、依赖倒置原则(DIP)
隔离关系,使用接口或抽象类代指
6、依赖注入(DI)和控制反转原则(ICO)
使用钩子再原来执行流程中注入其他对象
接口:
?123456789101112131415 | # =================================================以下是接口 |
抽象类抽象方法
?123456789101112131415161718192021 | import |
class Foo(object): def exec(self): raise NotImplementedError(‘请实现exec方法‘) class A(Foo): passobj=A()obj.exec()类A继承类Foo,因而拥有类Foo的所有属性。类A实例化一个对象obj,obj调用exec()方法,如果类A自己没有定义exec方法,就会主动抛出异常(raise)。
from abc import abstractmethod,ABCMeta class Foo(metaclass=ABCMeta): @abcstractmethod def exec(self): pass class A(Foo): passobj=A()从abc模块调用类abstractmethod和类ABCMeta,自己定义类Foo,继承抽象类ABCMeta,在类Foo中定义exec方法,并添加装饰器abcstractmethod。定义类A继承类Foo,并实例化对象obj,类A中必须有类Foo中的方法否则就会抛出异常。
引入依赖注入
解释器解释类的流程
?1234567891011121314 | # ======================================解释器解释类的流程=================== |
依赖注入在什么之前做什么操作
?1234567891011121314151617181920 | class |
?
123456789101112131415161718192021222324252627282930313233343536373839 | #=================================依赖注入案例一====================================== |
?
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | #######################依赖注入案例二==================================================== |
python 抽象类、抽象方法、接口、依赖注入、SOLIP
评论关闭