六大原则之开闭原则

来源:互联网 发布:淘宝虚拟类目进不去 编辑:程序博客网 时间:2024/05/17 00:52

   在看UML视频的时候看到了OCP原则,于是查查看吧:(Open-Closed Principle),

我理解的就是能很好地扩展但不能更改现有的模块,必须通过其他另创建个模块来实

现。百度得到的含意是:一个好的设计应该能够容纳新的功能需求的增加,但是增加的

方式不是通过修改又有的模块(类),而是通过增加新的模块(类)来完成的,也就是

设计的时候,所有软件组成实体包括接口,函数,函数等必须是可扩展但不可修改

的。如果一个设计能够遵循OCP,那么就能够有效的避免上述的问题。


    1988年,Bertrand Meyer在他的著作《Object Oriented Software Construction》

中提出了开闭原则,它的原文是这样:“Software entities should be open for 

extension,but closed for modification”。翻译过来就是:“软件实体应当对扩展开

放,对修改关闭”。这句话说得略微有点专业,我们把它讲得更通俗一点,也就是:软

件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功(Functions)

等等,应该在不修改现有代码的基础上,引入新功能。开闭原则中“开”,是指对于组

件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原

有代码的修改是封闭的,即不应该修改原有的代码。

               


   要想实现OCP就得靠抽象,然而抽象是个啥呢?它表征了一个固定的行为,但是对于

这个行为能有不同的实现方法。也就是说用抽象的概念代替那些容易变化切数量众多的

概念,并把依赖的模块也转移到这个抽象的概念上。再这样的基础上,要是系统增加新

的需求,不会影响依赖于具体概念的抽象提的其他模块,而是具体的概念的增加。 

    

  开闭原则是JAVA世界最基础的设计原则,他知道我们如何建立稳定、灵活的系统。也

就是一个软件应该通过扩展来实现变化,二绝非通过修改已有代码去实现变化,是为软

件的未来失误而特质的对现有的开发设计约束的原则。软件包括项目、抽象和类、方

法。因此我们就需要需要知道其重要性。一方面可以保持原有的测试能够正常进行,秩

序对扩展的代码进行测试即可。对于代码复用的可能性增大,提高可维护性。

              


  1)一个可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里面。同一

种可变性的不同表象意昧着同个继承等级结构中的具体子类。继承就当被看作是封装

变化的方法,而不应当被认为是从一般的对象生成特殊对象方法。


   2)一种可变性不应当与另一种可变性混合在一起。(所有类图的继承结构一般不会超

过两层,不然就意昧着将种不同的可变性混合在了一起。)


优点:

1、降低程序各部分之间的耦合性,使程序模块互换成为可能;

2、使软件各部分便于单元测试,通过编制与接口一致的模拟类,可以很容易地实现软件各部分的单元测试;

3、利于实现软件的模块的呼唤,软件升级时可以只部署发生变化的部分,而不会影响其它部分;




0 0
原创粉丝点击