设计模式基础--模式分类
来源:互联网 发布:犀牛软件图标 编辑:程序博客网 时间:2024/06/10 18:35
设计模式最初由GoF (Gang of Four,四人组, 《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)提出,而后大放异彩。
GoF将23种设计模式分成了三种基本类型
一、创建型(五种)
- Factory Method Pattern(工厂方法模式)
具体的工厂对象负责生产具体的产品对象
- Abstract Factory Pattern(抽象工厂模式)
就是对一组具有相同主题的工厂进行封装
- Singleton Pattern (单例模式)
一个类只有一个全局实例
- Prototype Pattern(原型模式)
通过复制一个已存在对象来生成一个新对象,被复制的对象称为原型
- Builder Pattern(生成器模式)
对复杂对象的创建过程进行抽象,相同的创建步骤,不一样的创建过程实现,生成不同表示的对象
- 简单工厂模式(不属于23种设计模式)
一个工厂方法,依据传入的参数,生成对应的具体产品对象
二、结构型(七种)
- Adapter Pattern(适配器模式)
适配器是将一种接口改造成另外一种接口的一个包装类
- Bridge Pattern(桥接模式)
将对象的行为抽象为接口,作为抽象类的成员属性在抽象层进行组合
- Composite Pattern(组合模式)
树形结构的实现,用于描述“整体-部分”的关系
- Decorator Pattern(装饰者模式)
通过关联机制给类增加行为,其行为的扩展由修饰对象来决定
- Façade Pattern(外观模式)
在子系统中的接口之上定义一个更高层次的接口,方便使用子系统中的接口
- Flyweight Pattern(享元模式)
大量细粒度对象共享复用
- Proxy Pattern(代理模式)
通过代理对象间接控制并访问目标对象的方法
三、行为型(十一种)
- Chain of Responsibility Pattern(职责链模式)
为请求创建一个接收者对象的链,每个接收者包含对另一个接收者的引用,当某个接受者不能处理该请求时,将请求转给下一个接受者
- Command Pattern(命令模式)
将请求封装成命令对象,请求的具体执行由命令接收者执行
- Interpreter Pattern(解释器模式)
定义一些语法规则,然后定义一个解析器去解析该语法
- Iterator Pattern(迭代器模式)
提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节
- Mediator Pattern(中介者模式)
对象之间通过中介者对象进行交互,而不是直接交互
- Memento Pattern(备忘录模式)
保存对象的某个状态并可以恢复到该状态
- Observer Pattern(观察者模式)
一对多的关系,又叫发布-订阅模式,即一个对象的状态发生变化,所有依赖它的对象能够知道该变化并自动更新
- State Pattern(状态模式)
一个对象的行为根据其内部状态的改变自动变化
- Strategy Pattern(策略模式)
对象的行为,在不同的环境下,有不同的实现
- Template Method Pattern(模板方法模式)
使用了JAVA的继承机制,在抽象类中定义一个模板方法,该方法引用了若干个抽象方法(由子类实现)或具体方法
- Visitor Pattern(访问者模式)
在不修改已有程序结构的前提下,通过添加额外的“访问者”来完成对已有代码功能的提升
- 设计模式基础--模式分类
- 设计模式之模式分类
- 设计模式之模式分类
- 设计模式分类
- 设计模式分类
- 设计模式随笔分类
- 设计模式分类
- 常见设计模式分类
- 设计模式的分类
- Java 设计模式分类
- 设计模式分类 中英对照
- 设计模式分类
- 设计模式分类
- 设计模式分类
- 设计模式的分类
- 设计模式分类
- Java 设计模式分类
- 设计模式分类
- Windows下查看GPU(NVIDIA)使用情况
- LightOJ 1067 Combinations
- mui中点击弹出新的菜单栏,修改高度的实现
- STM32之EXIT函数一览
- Sass语法--嵌套
- 设计模式基础--模式分类
- 《C和指针》读书笔记(二)
- 微信二维码扫一扫
- GestureDetector
- 如何在 MathJax 中使用 Latex 编辑数学公式
- websocket简述
- 《C和指针》读书笔记(三)
- Apple开发账号续费流程及Tips
- 每日一则JavaWeb---spring中非Controller层使用HttpServletRequest两种解决方案