OCP(开放-封闭原则)
定义:软件实体(类,模版,函数等),应该是可以拓展的,但是不可修改的.
特征:①对拓展开放,即可以改变模块的功能
②对更改封闭,即对模块进行拓展时,不必改动模块原有的代码或二进制
方法:创建出固定却能描述一组任意个可能行为的抽象,而模块可以操作这类抽象体.由于模块依赖一个抽象体,因此更改可以是关闭的,同时通过这个抽象体派生,也可以拓展次模块的行为.
理解:开放-封闭是相对的,系统进行到不同程度会有不同的做法,一切都要随着当前而变.因此这常常会成为过度设计的源头,为以后预留某些功能,导致预留错误.我的做法是事不过二(也是Robert CMartin所说的只接受一次愚弄),起初为了防止过度设计,允许更改一次设计.当第二次修改出现之后就要考虑使用这个原则.