创建型模式:对对象实例化的抽象,通过采用抽象类所定义的接口,封装了系统中对象如何创建,组合等信息。包括以下几种设计模式
- 分离了具体类
- 更容易在产品系列中进行转换
- 提高了产品间一致性
- 难以支持新的产品等级结构
- 支持新的产品等级结构就要扩展原来的抽象工厂接口
- 系统独立于产品的创建,组成以及表示
- 系统配置成具有多个产品的系列
- 当要强调一系列相关的产品对象的设计便于进行联合使用时
- 当提供一个产品类库,而只想显示它们的接口而不是实现时
在很多软件系统中需要更换界面主题,要求界面中的按钮,文本框,背景色等一起发生改变时可以使用抽象工厂模式进行设计
- 产品的内部表象可以独立变化
- 将构建代码与表示代码相分离,可以使客户端不必知道产品内部组成的细节
- 构建器模式创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间差异性很大。则不适合使用构建器模式
- 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
创建复杂对象的算法独立于组成对象的部分以及这些部分的集合方式
构造过程必须允许已构建对象有不同表示
在很多游戏软件中,地图包括天空,地面背景等组成部分,人物角色包括人体,服装,装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物
定义一个用于创建对象(产品)的接口,由子类决定实例化那个类的对象( 产品)
类希望子类指定他要创建的对象
Windows的COM组件与MFC
指定创建对象的种类,并且通过拷贝这些原型创建新的对象,以一个已有的对象作为原型,通过他来创建新对象
产品类不需要非得由任何实现确定的等级结构
每一个类必须配备一个克隆方法
当类的实例是仅有的一些不同状态组合
一个类只有一个实例
比类操作更灵活
单例类的扩展有很大困难,且职责过重,这在一定程度上违背了单一职责原则
只有一个类实例
逐渐生成器
主要用于如何组合已有的类和对象以获得更大的结构,它采用继承机制组合接口来实现,以提供 统一的外部试图或新的功能
将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本的接口不兼容而不能一起工作的那些类可以一起工作
过多的适用适配器会让系统非常凌乱,不易整体进行把握
在.Net重有一个类库已经实现的,非常重要的适配器——Data Adapter
将一个辅助的组件分成两个独立的但又相关的继承层次结构
对客户端隐藏了实现细节
要求正确的识别出系统重两个独立变化的维度,因此其使用范围有一定的局限性
将对象组合成树型结构以表示“部分-整体”的层次结构
使设计变得更加抽象。如果对象的业务规则很复杂,则实现组合模式具有很大的挑战性,而且不是所有的方法都与叶子对象子类有关联
结构可以具有任何级别的复杂性,而且是动态的
部分、整体场景如树型菜单,文件,文件夹的管理
动态的给对象添加一些额外的责任,就增加功能来说,装饰比生成子类更为灵活
多层装饰比较复杂
为子系统重的一组接口提供一个统一的接口,外观模式通过一个高层接口隔离了外部系统与子系统间复杂的交互过程,使得复杂系统的子系统更容易使用
通过共享对象减少系统中低等级的,详细的对象数目
为控制初始对象的访问,提供了一个代理或者占位符对象
虚拟代理可以执行优化操作
实现代理模式需要额外的工作,从而增加了系统实现的复杂度
当需要创建开销非常大的对象时
防火墙代理---保护目标不让恶意用户靠近
从大量的实际行动中概括出来作为行为的理论抽象、基本框架和标准,该类模式主要用于对象之间的职责及其提供的服务的分配,他不仅描述对象或类的模式,还描述它们之间的通信模式
在系统中建立一个链,消息可以首先接收到他的级别被处理,或者定位到可以处理他的对象
在对象中封装请求,保存命令并传递给方法以及任何其他对象一样返回该命令
解释定义其语法表示的语言
提供一种方法顺序的访问一个聚合对象中的各个元素,而又不暴露改对象的内部表示
保持对象状态的“快照”,在不向外界公开其内容的情况下返回到它的最初状态
为组件向相关接收方广播消息提供了灵活的方法
允许对象在内部状态变化时变更其行为,并且修改其类
定义了一组用来表示可能行为集合的类
提供了在不重写方法的前提下允许子类重载部分方法的方法
提供了一种方便的,可维护的方法来表示在对象结构元素上进行的操作。改模式允许在不改变操作元素的类的前提下定义一个新操作
集中相关操作并且排除不相关操作
对象结构包含许多具有不同接口的对象类,并且想要对这些依赖于具体的类的对象进行操作
通过引入一个能够管理对象间消息分布的对象,简化系统中对象的通信
本文由博客一文多发平台 OpenWrite 发布!
原文:https://www.cnblogs.com/zhendiao/p/11774049.html