(以下内容来自网络,只为加深理解)
开放封闭原则
软件实体软件实体应该是可扩展,而不可修改的。
开放:扩展
封闭:修改
对扩展开放意味着在又新的需求或变化时,可以对代码进行扩展,以适应新的情况。
对修改封闭意味着程序一旦设计完成,就可以独立完成其工作,而不要对程序进行任何修改。
Python实例
已经定义好的3函数,现在要去在对每个函数的调用进行验证
# 重复造轮子方式def validate(): print 'validate'def f1(): validate() print 'this is f1'def f2(): validate() print 'this is f2'def f3(): validate() print 'this is f3'f1()f2()f3()
重复造轮子不是个好的方法,而且不符合开放封闭原则,对已经完成的函数进行了修改
def validate(func): print 'validate' return funcdef f1(): print 'this is f1'def f2(): print 'this is f2'def f3(): print 'this is f3'f1 = validate(f1)f1()
这种方法采用对调用的方法进行包含,在完成验证进行执行需要执行的函数
将需要执行的函数以参数的形式传递给验证函数,在完成验证后在返回需要执行的函数(这里传递和返回的只是函数的地址)
对验证函数的返回值进行函数调用可以完成同样的需求
既没有重复造轮子也没有改变函数本身,完全符合开放封闭原则
这种实现方式在python中有更好的方法可以实现(装饰器)
def validate(func): print 'validate' return func@validatedef f1(): print 'this is f1'