python实现"对修改封闭, 对扩展开放"
对修改封闭, 对扩展开放
是架构设计的基本原则. 意思是如果程序增加新的功能, 则不应该修改老的代码, 只需要增加新的代码就可以了, 这样可以避免对老功能的破坏, 新增功能如果有问题, 也很容易回退.
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并不直接依赖, 而是共同依赖于特定消息, 每一个特性可以订阅一些消息, 也可以发布消息, 这样只需要保持消息的稳定性和兼容性, 就最大限度的降低了模块间的耦合性.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人