`
xiaolixv
  • 浏览: 3507 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

JAVA设计模式--读书笔记一

阅读更多

开闭原则(对修改封闭,对扩展开放)

        解决问题的关键在于抽象化。在面向对象编程里面可以给系统定义出一个不再更改的抽象设计(JAVA的抽象类或JAVA接口规定出所有具体类必须提供的方法的特征),这个抽象层预见了所有的可能扩展(理想状态),这使得这个抽象层不需要修改。从而满足了"开-闭"原则的第一条“对修改关闭”。

      同时,由于抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统设计对扩展是开放的,这就满足了"开-闭"原则的第二条“对扩展开放”。 

      开闭原则从另一个角度描述就是“对可变性的封装”。对可变性的封装意味这两点:

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

      (2)一种可变性不应当与另一种可变性混合在一起。

       开闭原则的手段和工具 

       里氏代换原则:任何基类可以出现的地方,子类一定可以出现。它是对实现抽象化的具体步骤的规范。

       依赖倒转原则:要依赖抽象,不要依赖于具体。即:针对接口和抽象类编程不针对实现编程。

       合成/聚合复用原则:要尽量使用合成/聚合,尽量不要使用继承。

             合成:当一个A类型的对象销毁了存储单元时,b引用的对象也销毁存储单元。换句话说,b引用的对象的存在依赖于A类型的对象。
             聚合:当一个A类型的对象销毁了存储单元时,b引用的对象并没有销毁存储单元。换句话说,b引用的对象独立于于A类型的对象。

       迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用

       接口隔离原则:使用多个专门的接口比使用单一的总接口要好,一个类对另外一个类的依赖性应当是建立在最小的接口上的。注意:不要接口污染(使接口过于臃肿)

      

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics