博客园第一天,开放封闭原则

(以下内容来自网络,只为加深理解)

开放封闭原则

软件实体软件实体应该是可扩展,而不可修改的。

开放:扩展

封闭:修改

 对扩展开放意味着在又新的需求或变化时,可以对代码进行扩展,以适应新的情况。

对修改封闭意味着程序一旦设计完成,就可以独立完成其工作,而不要对程序进行任何修改。

 

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 func

def 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

@validate
def f1():
    print 'this is f1'

 

posted @ 2017-03-13 23:47  hl450  阅读(196)  评论(0)    收藏  举报