对修改封闭, 对扩展开放
是架构设计的基本原则. 意思是如果程序增加新的功能, 则不应该修改老的代码, 只需要增加新的代码就可以了, 这样可以避免对老功能的破坏, 新增功能如果有问题, 也很容易回退.
python语言如何实现这个设计目标呢?
可以使用我们之前提到的消息机制来实现: python基于消息的编程
- 关于特性
我们定义一个特性类, 只要继承自此类, 就会自动生成此特性的对象, 特性就会自动加载进系统, 不用修改已有程序代码. 如下所示:
from Message import *
class Feature: pass
class Test1(Feature):
def __init__(self):
sub('Test1', lambda:print('recv msg')) # 订阅消息
class Test2(Feature):
def __init__(self):
pub('Test1') # 发布消息
def Run():
'''运行程序'''
for subclass in Feature.__subclasses__(): subclass()
Run()
系统会自动实例化继承自Feature的类, 这样如果增加新特性, 只需要增加一个继承自Feature的类即可.
- 消息机制
如上例所示, 特性Test1和Test2并不直接依赖, 而是共同依赖于特定消息, 每一个特性可以订阅一些消息, 也可以发布消息, 这样只需要保持消息的稳定性和兼容性, 就最大限度的降低了模块间的耦合性.