美文网首页
Java与模式读书笔记

Java与模式读书笔记

作者: 我的小鱼干去哪儿了 | 来源:发表于2018-05-02 13:45 被阅读0次

    1. 什么是模式?

    模式化的过程是把问题抽象化,在忽略掉不重要的细节后,发现问题的一般性本质,并找到普遍适用的解决方案的过程。

    2. 好的系统应该具有的性质

    • 可扩展性
    • 灵活性
    • 可插入性

    3. 开闭原则 (OCP)

    一个软件实体应该对扩展开放,对修改封闭
    对可变性的封装原则: 找到一个系统的可变因素,将其封装起来

    继承

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

    与里氏替换原则的关系

    (1)里氏替换:任何基类可以出现的地方,子类一定可以出现。
    (2)里氏替换原则是对开闭原则的补充。
    实现开闭原则的关键步骤是抽象化。
    基类与子类的继承关系就是抽象化的具体体现。
    里氏替换是对实现抽象化的具体步骤的规范。
    (3)违背里氏替换原则的也违背开闭原则,反之不然。

    与依赖倒转原则的关系

    (1) 依赖倒转: 要依赖于抽象,不要依赖于实现
    (2) 开闭原则是目标,依赖倒转是手段

    与合成/聚合复用原则的关系

    (1) 合成/聚合复用原则:要尽量使用合成/聚合,而不是继承关系达到目的
    (2) 合成/聚合复用原则 与 里氏替换原则 是相辅相成的
    (3) 与里氏替换原则一样,是对实现抽象化的具体步骤的规范
    (4) 是实现开闭原则的必要条件,如果违法这一原则,系统就无法实现开闭原则。

    与迪米特法则的关系

    (1) 一个软件实体应当尽可能少的与其他实体发生相互作用。
    (2) 迪米特法则容易做到对修改的封闭,是一条通向开闭原则的道路。

    与合成/聚合复用原则的关系

    (1) 合成/聚合复用原则: 应当为客户端提供尽可能小的单独的接口,而不是提供大的总接口。
    (2) 限制了通信的宽度,不会将修改的压力传递到其他的对象。

    4. 接口

    4.1 可插入性构件

    关键在于存在一个公用的接口,以及每个构件都实现了这个接口。

    4.2 接口

    接口是实现可插入性构件的关键。
    接口把方法的特征和方法的实现分割开来。
    接口通常代表一个角色(Role), 它包含与该角色相关的操作与属性,而实现这个接口的类便是扮演这个角色的演员。

    接口提供了关联以及方法调用上 的可插入性。

    5. 抽象类

    (1)抽象类可以同时有抽象方法和具体方法。
    (2)抽象类一定是用来继承的,只要有可能,不要从具体类继承。
    (3)IS-A关系才符合继承关系,Has-A 关系符合聚合关系。

    6. 里氏替换原则 (LSP)

    一个软件实体如果使用的是其基类的话,那么一定适用于其子类,而它根本不能察觉出基类对象和子类对象的区别。

    里氏替换原则是继承复用的基石。

    7. 依赖倒转原则(DIP)

    要依赖于抽象,不依赖于具体。要针对接口编程,不针对实现编程。
    开闭原则是面向对象设计的目标,依赖倒转原则是面向对象设计的主要机制。

    7.1 三种耦合关系

    • 零关系耦合
    • 具体耦合
    • 抽象耦合

    8.接口隔离原则(ISP)

    使用多个专门的接口比使用单一的总接口要好
    一个接口应当简单的代表一种角色(单一责任原则)

    9. 合成/聚合复用原则 (CARP)

    要尽量使用合成/聚合,尽量不要使用继承。

    9.1 合成

    合成表示拥有关系或者整体与部分的关系

    9.2 聚合

    聚合也表示整体与部分的关系,但是部分与整体的生命周期是一样的。

    9.3 Has-A 和 Is-A

    如果两个类的关系是Has-A, 那么这两个类一定违反里氏替换原则。
    只有两个类符合里氏替换原则,才有可能是Is-A关系。

    10. 迪米特法则(LoD Low Of Demeter)

    又叫最少知识原则,一个对象应当对其他对象有尽可能少的了解。
    一个对象仅仅与其朋友发生相互作用。

    11. SOLID原则 总结

    缩写 全程 中文
    S The Single Responsibility Principle 单一责任原则
    O The Open Closed Principle 开放封闭原则
    L Liskov Substitution Principle 里氏替换原则
    I The Interface Segregation Principle 接口分离原则
    D The Dependency Inversion Principle 依赖倒置原则

    12. 参考文献

    1. Java与模式
    2. 面向对象的SOLID原则

    相关文章

      网友评论

          本文标题:Java与模式读书笔记

          本文链接:https://www.haomeiwen.com/subject/okxcrftx.html