常用设计模式一句话概括
1. 简单工厂模式
在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。
2. 工厂方法
定义了一个创建对象的接口,但由这个接口的子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。
3. 抽象工厂
提供一个接口,用于创建 相关的产品族 。
4. 原型模式
- 创建一个原型对象,通过复制这个原型对象来创建新的对象
5. 建造者模式(生成器模式)(Builder模式)
将一个复杂对象的构造和它的表示相分离,使同样的构建过程可以创建不同的表示。它将一个复杂的对象分解为多个简单的对象,一步一步地构造而成。产品的组成部分是不变的,但是每一部分是可以灵活选择的。
建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成,现在我们来分析其基本结构和实现方法。
- 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。
- 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
- 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
- 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。
5.1 应用场景
- 相同的方法,不同的执行顺序,产生不同的结果
- 产品有很多简单对象组成,产品的组成部分是不变的,但是每一部分可以灵活选择。
5.2 与工厂模式的区别
- 建造者模式唯一区别于工厂模式的是针对复杂对象的创建。也就是说,如果创建简单对象,通常都是使用工厂模式进行创建,而如果创建复杂对象,就可以考虑使用建造者模式。
- 建造者模式更加注重方法的调用顺序,工厂模式注重创建对象。
迭代器模式
提供一种顺序访问聚合对象元素的方法,并不暴露聚合对象的内部表示
适配器模式
把一个类的接口转换成另一个用户需要的接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
适配器模式(Adapter)包含以下主要角色。
- 目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。
- 适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。
- 适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成目标接口,让客户按目标接口的格式访问适配者。
适配器模式分为类结构型模式和对象结构型模式,前者的类耦合度比较高,用的比较少。
类适配器模式的结构图如下图 所示。
对象适配器模式的结构图如下图 所示。
其中适配器模式和迭代器模式都是在Java的容器里面使用了
https://www.jianshu.com/p/1ab3209d0f65
装饰模式
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。
或者也可以这么说,使用组合关系来创建一个包装对象来包裹真实对象,在保持真实对象的类结构不变的前提下,为其提供额外的功能。
主要优点:
采用装饰模式扩展对象的功能比采用继承方式更加灵活。
可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。
主要缺点:
装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。
装饰模式的参考资料
https://www.jianshu.com/p/1f3e6eeb54c3