欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java与模式 读书笔记-开闭原则

程序员文章站 2022-07-02 18:26:46
...

“开一闭”原则讲的是:一个软件实体应当对扩展开放,对修改关闭。这一原则最早由Bertrand Meyer [MEYER88]提出,英文原文是:
    Software entities should be open for extension, but closed for modification.

书中列出 玉帝招安美猴王 的例子,换言之,不劳师动众、不破坏天规便是“闭”,收仙有道便是“开”。招安之法便是玉帝天庭的“开一闭”原则,通过给美猴王封一个“弼马温”的官职,便可使现有系统满足变化了的需求,而不必更改天庭的既有秩序,如下图所示。

Java与模式 读书笔记-开闭原则
            
    
    博客分类: Java 读书Java设计模式 

 

 

 

这个例子举的非常棒,非常直观的看出是在系统中加一个模块,而不是更改原有模块。

根本还是在于抽象化!

尽管在很多情况下,无法百分之百地做到“开一闭”原则,但是如果向这个方向上的
努力能够得到部分的成功,也可以显著地改善一个系统的结构。

 

 


里氏代换原则中说,
里氏代换原则是对
任何基类可以出现的地方,子类一定可以出现。
关键步骤就是抽象化。
“开一闭”原则的补充。正如前面所谈到的,实现
而基类与子类的继承关系就是抽象化的具体体现,
“开一闭”原则的
所以里氏代换原
则是对实现抽象化的具体步骤的规范。

     合成/聚合复用原则讲的是,要尽量使用合成/聚合,而不是继承关系达到复用的目的。
    显然,合成/聚合复用原则是与里氏代换原则相辅相成的,两者又都是对实现“开一闭”
原则的具体步骤的规范。前者要求设计师首先考虑合成/聚合关系,后者要求在使用继承
关系时,必须确定这个关系是符合一定条件的。
    遵守合成/聚合复用原则是实现“开一闭”原则的必要条件;违反这一原则就无法使系
统实现“开一闭”原则这一目标。

    迪米特法则讲的是,一个软件实体应当与尽可能少的其他实体发生相互作用。
    当一个系统面临功能扩展的时候,其中会有一些模块,它们需要修改的压力比其他一
些模块要大。最后的结果可能是这些模块需要修改或者不需要修改。但是不论是哪一种情
况,如果这些模块是相对孤立的,那么它们就不会将修改的压力传递给其他的模块。
    这就是说,一个遵守迪米特原则设计出来的系统在功能需要扩展时,会相对更容易地
做到对修改的关闭。也就是说,迪米特法则是一条通向“开一闭”原则的道路。

  • Java与模式 读书笔记-开闭原则
            
    
    博客分类: Java 读书Java设计模式 
  • 大小: 11.4 KB