博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
博客园第一天,开放封闭原则
阅读量:4632 次
发布时间:2019-06-09

本文共 894 字,大约阅读时间需要 2 分钟。

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

开放封闭原则

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

开放:扩展

封闭:修改

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

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

 

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'

 

转载于:https://www.cnblogs.com/hl540/p/6545832.html

你可能感兴趣的文章
复习事件委托
查看>>
wordpress 如何防止盗链
查看>>
请大家一定善用emule!
查看>>
Educational Codeforces Round 13 B. The Same Calendar 水题
查看>>
纠正部分Linux初学者对ctime的误解
查看>>
shell命令快捷键
查看>>
树链剖分(模板)
查看>>
c输出格式
查看>>
mod(%)之规律(除数与被除数的正负分析)
查看>>
C#编程(三十六)----------元组
查看>>
Django 第十课 4.【ORM查询操作】
查看>>
ffmpeg实战系列——001
查看>>
采样器----Debug Sampler
查看>>
ifup / ifdown eth0 / eno1 reports unknown interface when it exists!
查看>>
ListCtrl的多行删除
查看>>
[bzoj2456]mode
查看>>
【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知
查看>>
Java中的语法糖
查看>>
Android使用Camera2获取预览数据
查看>>
Shapefile文件格式分析
查看>>