JAVA23种设计模式总结

目录

 

一.对象设计的六大原则

二、设计模式的三个分类

三、JAVA2种设计模式源码


一.对象设计的六大原则:

  1. 组合复用原则:多用组合,少用继承。找到变化的部分进行抽象封装。区分是Has-A与Is-A

  2. 依赖倒置原则:依赖:成员变量、方法参数、返回值,要依赖与抽象,不要依赖于具体,高层模块不应该依赖于底层模块,二者都应该依赖其抽象类。抽象不应该依赖具体,具体应该依赖抽象。针对接口编程,不要针对现实编程。以抽象为基础搭建的结构比具体类搭建的结构要稳定多。

  3. 开闭原则:对扩展开放,对修改关闭。

  4. 里氏替换原则:所有引用的基类的地方必须能够透明的使用其子类对象;子类在扩展父类功能是不能破坏父类原有的功能;使用继承时,需要遵循里氏替换原则:子类可以实现父类抽象方法,不能覆盖父类的非抽象方法;当子类重载父类方法时,方法的形参要比父类方法的参数更宽松;当子类实现父类的抽象方法时,方法的返回值要比父类更严格。这个原则是设计整个继承体系的原则。

  5. 迪米特法则:一个对象应该与其他对象保持最少了解,只与直接朋友交谈;成员变量、方法参数、方法返回值中需要的类为直接盆友,类与类之间的关系越密切了解越多,耦合度越大,尽量降低类之间的耦合度,例如外观模式、中介者模式。

  6. 单一职责原则:类应该只有一个导致类变更的理由;一个类只负责一项职责;降低类的复杂度,提高系统的可维护性。修改时降低风险溢出

二、设计模式的三个分类

  1. 创建型模式:对象的实例化的模式,创建型模式解耦了对象的实例化过程

    1. 简单工厂:一个工厂类根据传入的参数决定创建出哪一种产品类的实例。

    2. 工厂方法:定义一个创建对象的接口,让子类决定实例化那一个类。

    3. 抽象工厂:创建相关或者依赖对象的家族,而无需明确指定具体类。

    4. 单例模式:某个类只能有一个实例,提供一个全局访问点。

    5. 生成器模式:封装一个复杂对象的构建过程,并可以按照步骤构造。

    6. 原型模式:通过复制现有的实例来创建新的实例。

  2. 结构型模式:把类或者对象结合在一起形成更大的结构

    1. 适配器模式:将一个类的方法接口转换成客户希望的另一个接口。

    2. 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。

    3. 装饰者模式:动态的给对象添加新功能。

    4. 代理模式:为其他对象提供一个代理一控制这个对象的访问。

    5. 蝇量模式(享元模式):通过共享技术有效的支持大量细粒度的对象。

    6. 外观模式:提供一个统一的方法来访问子系统的一群接口。

    7. 桥接模式:将抽象部分与它的实现部分分离,是他们可以独立进化。

  3. 行为型模式:类和对象如何交互,及划分责任和算法

    1. 模板模式:定义一个算法结构,而将一些步骤延迟到子类中实现。

    2. 解释器模式:定义一个语言,定义他的文法的一种表示,并且定义一个解释器。

    3. 策略模式:定义一系列算法,把他们封装起来,并且是他们可以相互替换。

    4. 状态模式:允许一个对象在其内部状态改变是改变它的行为。

    5. 观察者模式:对象间一对多的依赖关系。

    6. 备忘录模式:在不破坏封装性的前提下,保存对象的内部状态。

    7. 中介者模式:用一个中介对象来封装一系列对象的交互。

    8. 命令模式:将命令请求封装为一个对象,使得可用不同的请求来进行参数化。

    9. 访问者模式:在不改变数据的前提下,增加作用于一组对象元素的功能。

    10. 责任链模式:请求发送者和接受者之间解耦合,使多个对象都有机会处理这个请求。

    11. 迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构


三、JAVA2种设计模式源码:

DesignPattern

源码目录说明:

1. 策略模式示例代码:DesignPattern/src/strategy
2. 观察者模式示例代码:DesignPattern/src/observer
3. 装饰者模式示例代码: DesignPattern/src/decorator
4. 单例模式示例代码:DesignPattern/src/singleton
5. 工厂模式

    5.1.简单工厂模式示例代码:DesignPattern/src/factory/simplefactory
    5.2.工厂方法模式示例代码:DesignPattern/src/factory/factoryMethod
    5.3.抽象工厂模式示例代码:DesignPattern/src/factory/absfactory
6. 命令模式示例代码:DesignPattern/src/command
7. 适配器模式示例代码:DesignPattern/src/adapter
8. 外观模式示例代码:DesignPattern/src/facade
9. 模板模式示例代码:DesignPattern/src/template
10. 迭代器模式示例代码:DesignPattern/src/iterator
11. 组合模式示例代码:DesignPattern/src/composite
12. 状态模式示例代码:DesignPattern/src/state
13. 代理模式示例代码 :DesignPattern/src/proxy
14. 桥接模式示例代码 :DesignPattern/src/bridge
15. 生成器模式示例代码: DesignPattern/src/builder
16. 责任链模式示例代码 :DesignPattern/src/chainms
17. 享元模式示例代码 :DesignPattern/src/flyWeight
18. 解释器模式示例代码 :DesignPattern/src/interpreter
19. 中介者模式示例代码: DesignPattern/src/mediator
20. 备忘录模式示例代码 :DesignPattern/src/memento
21. 原型模式示例代码 :DesignPattern/src/prototype
22. 访问者模式示例代码: DesignPattern/src/visitor


发布了62 篇原创文章 · 获赞 8 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/system_obj/article/details/88703454