设计模式
Mr-Dong
这个作者很懒,什么都没留下…
展开
-
设计模式20-单例模式
1. 描述 一个类在进程中只能存在一个实例,保证唯一性。 2. 特点 1) 全局只有一个对象 2)提供外界访问这个对象的接口。 3)实例对象只能单例类自己创建,外界不能创建,这个说明这个类的构造是私有的。 3.示例 #include "stdafx.h" #include <iostream> using namespace std; class Singleton...原创 2020-03-03 21:02:27 · 98 阅读 · 0 评论 -
设计模式19-组合模式
1.描述 将一种对象组合成树状层次结构的模式。 2.优点 1)对树上的对象处理一致。 2)可以容易在组合内加入新的对象,而不改源代码 3.缺点 1)对树的逻辑需要树立清楚。 2)不容易使用继承的方法增加功能。 4.结构 1)抽象构件:树叶和树枝的抽象类。 2)树叶构件:没有子节点。 3)树枝构件:管理树叶构件。 5.UML 6.示例 ...原创 2020-02-20 18:31:19 · 1406 阅读 · 0 评论 -
设计模式18-备忘录模式(快照模式)
1. 描述 捕捉一个对象的状态,在以后能够通过捕捉的状态恢复对象的状态。 2.优点 1)能够恢复历史.(可以和原型模式一块使用)。 3.缺点 保存对象多了,占内存。 4.结构 1)发起人:被备份者,提供备忘录信息。 2)备忘录:保存和提供发起人内部状态 3)备忘录管理者:对备忘录进行保存和获取功能。 5.UML 6.示例 #include "stdafx.h" #in...原创 2020-02-19 15:29:44 · 418 阅读 · 0 评论 -
设计模式17-适配器模式
1.描述 对类继承或者将类封装为变量,使类接口能够被使用。 可以分为类适配器和对象适配器。类适配器是对适配器继承已有的类;对象适配器是适配器将已有的类作为成员变量。这是就是两种适配器的写法 2.优点 1)想用功能又不能直接使用的时候,通过适配器能够调用; 2)复用原类,增加功能等,不需要改原先代码。 3.缺点 更换适配器复杂 4.结构 1)适配器 2)被适配类 5.UML ...原创 2020-02-19 10:50:54 · 125 阅读 · 0 评论 -
16.设计模式-状态模式
1. 描述 一个对象想内部状态类改变时,允许改变其行为。就是把一个对象的状态改到一系列状态类中,在状态类中控制条件判断、状态改变。 2. 特点 1) 将状态的行为都封装都状态类中,不同的状态不同的类。 2)状态转化条件在状态类中,不会出现状态随意变换的问题。 3) 可拓展性性强。 3.缺点 状态的越多,类越多 4.结构 1)上下文:维护当前状态。 2)抽象状态:定义封装状态变化...原创 2020-02-17 19:25:33 · 145 阅读 · 0 评论 -
设计模式15-抽象工厂模式
1. 描述 抽象工厂模式就是一个抽象类(抽象工厂)定义一组接口(返回一组产品), 2. 简单工厂、多态工厂和抽象工厂的区别 1) 简单工厂:1个工厂根据条件生产多个产品 2) 多态工厂:多个工厂依赖一个抽象,每个工厂生产1个产品 3) 抽象工厂:多个工厂,依赖一个抽象;每个工厂生产多个产品(1组产品),每个产品依赖1个抽象。 由此可见,简单工厂,堕胎工程,和抽象工厂是依次优化的关系。 ...原创 2020-02-17 17:38:34 · 151 阅读 · 0 评论 -
设计模式14-观察者模式(发布-订阅模式)
1. 描述 一个对象状态改变引起其他对象自动更新。 2. 特点 1)目标和观察者建立了触发机制,目标被触发,观察者们做出相应处理。 2)通过目标和观察者抽象对象进行调用,降低了耦合关系。 3. 缺点 1) 存在循环调用的风险 2)观察者多事,更新时间会变久,影响程序效率。、 4. 结构 1)抽象目标 2)具体目标:触发该改变,调用观察者更新状态。 3)抽象观察者 4)具体观...原创 2020-02-13 17:59:58 · 249 阅读 · 0 评论 -
设计模式13-建造者模式
目录 1. 描述 2. 特点 3. 缺点 4.要素 5.UML 6. 示例 1. 描述 将构造和表示分离,构造过程一样,但是构造结果不一样。 2. 特点 1) 过程确定,但是构造细节可以变化,将细节隔离出去,有利于系统的拓展 2) 客户端不必要迟到内部组成细节,控制细节风险 3. 缺点 1)过程确定 4.要素 1) 产品:对建造成果的展示。 2)抽象建造者: 3)...原创 2020-02-12 18:36:59 · 101 阅读 · 0 评论 -
设计模式12-多态工厂模式
1.描述 工厂模式是简单工厂模式的优化,将简单工厂中静态创建对象方法拆分为一个对象一个工厂类。 2.优点 1)解决简单工厂中违背开放封闭原则,简单工厂中添加新对象需要修改简单工厂中case,在多态工厂中是添加新产品的工厂和新产品类,没有对已有的代码进行修改。 2)工厂不是简单工厂有静态方放不可继承,可继承,实现多态和可拓展。 3.缺点 新增产品都会增加产品工厂类,增加了系统的复杂程度。...原创 2020-02-09 10:49:55 · 267 阅读 · 0 评论 -
设计模式11-代理模式
1. 描述 添加一个中间类,中间类可以访问另一个对象和扩展另一个对象功能。 2.作用 1) 中间类以保护对象嘛,限制对象的访问 2) 可以扩展对象功能 3) 客户端和目标对象分离,降低系统耦合。 3.结构 1)抽象类:定义代理和对象接口 2)真实对象:实现抽象类中的方法 3)代理:引用真实对象,调用对象方法 4. UML ...原创 2020-02-08 17:35:35 · 134 阅读 · 0 评论 -
设计模式10-装饰模式
1. 描述 不该变原有对象的代码,动态的给对象增加新的功能。 装饰可以看成一条功能扩展链。新加的节点为前面的节点拓展功能。 2.优点 1)扩展对象功能更加灵活 2)不同的装饰类可以随意组合 3. 缺点 装饰子类多,并且注意顺序的装饰。 4. 结构 1)抽象构件:主要定义抽象接口,子类实现装饰职责 2)具体构件:装饰的原型,装饰链的起点。 3)抽象装饰: 4)具体装饰 5....原创 2020-02-08 17:10:22 · 119 阅读 · 0 评论 -
设计模式9-七大原则总结
开放封闭原则:开发总纲 接口隔离原则:接口功能单一 依赖倒转原则:面向接口编程 单一职责原则:类的功能单一 合成复用原则:类的组合聚合 里氏替换原则:类的继承 最少知识原则:类耦合降低 两接四类一总纲。 ...原创 2020-02-07 10:47:35 · 127 阅读 · 0 评论 -
设计模式8-迪米特法则
7迪米特法则(最少知识原则) 7.1 描述 减少类之间的交互,减少类之间的耦合,类之间的通过第三个类去交互。 7.2 优点 1)降低类之间的耦合 2)提高了类的复用率和拓展性。 3)和依赖倒转的不同时,同级类之间不通信。依赖倒转是上层调用细节的父类来减少依赖。 7.3 缺点 产生大量中间类,增加系统的复杂性,降低通信效率。 7.4 设计原则 依赖者只依赖应该依赖的对象 被依...原创 2020-02-07 10:20:16 · 142 阅读 · 0 评论 -
设计模式8-合成复用原则
6. 合成复用原则 6.1 描述 多用聚合组合少用继承。和里氏替换原则相辅相成。将已有的对象(也可称为成员对象)纳入到新对象中使之成为新对象的一部分,因此新对象可以调用已有对象的功能,这样做可以使得成员对象的内部实现细节对于新对象不可见,所以这种复用又称为“黑箱”复用》。 6.2 优点 合成聚合解决继承中需要修改父类才能解决新问题的方法。 6.3 总结 里氏替换是不让修改继承的父类,合...原创 2020-02-06 17:31:05 · 142 阅读 · 0 评论 -
设计模式7-接口隔离原则
5. 接口隔离原则 5.1 描述 将庞大的接口拆分更小的接口,在接口类中只包含客户端想要的方法。 5.2 和单一职责的区别 1). 单一职责注重的单一变化,但是解耦隔离注重的是减少客户端对不必要接口的依赖。 2.) 单一职责约束的是类,根据不同的职责将类拆分多个类;接口约束的是接口,将一个接口拆分多个接口,将一个接口类,拆分多个接口类。 5.3 优点 1) 接口颗粒度小,外部变更减少...原创 2020-02-06 17:01:11 · 124 阅读 · 0 评论 -
设计模式6-依赖倒转原则
4. 依赖倒转原则(面向接口编程) 4.1 描述 上层和细节都只依赖抽象类或者接口类。 将代码分了三层:上层,细节和接口层 4.2 优点 1)减少类之间的耦合性,减少上层和细节的依赖 2)提高系统稳定性 4.3 注意 依赖倒转就是面向抽象、面向接口编程。 #include "stdafx.h" #include <iostream> //1. 接口层 class ...原创 2020-02-06 16:17:12 · 103 阅读 · 0 评论 -
设计模式5-里氏代换原则
3. 里氏代换原则(子类可以替换父类) 3.1 描述 任何基类出现的地方,子类都可以出现,子类可以拓展。这就是正确使用继承的原则。 3.2 优点 降低继承带来的入侵性,降低耦合性。 3.3 方法 1) 子类必须实现父类的抽象方法,但不覆盖父类的非抽象方法。 2) 子类可以增加自己特有的方法 3 ) 子类重载父类的方法时候,方法的形参要更加宽松 4) 子类实现父类的抽象方法是,...原创 2020-02-06 15:46:53 · 119 阅读 · 0 评论 -
设计模式4-开放封闭原则
2. 开放封闭原则 2.1 描述 可以增加功能,但是不修改已有的代码。所有他由两层含义,开发和封闭。 2.3 优点 1) 封闭原则提高代码稳定行,不修改已有的代码,减少系统功能的影响,减少功能的测试性。 2)开放原则提高复用性,开放原则需要考虑功能扩展。 3) 开放封闭能够降低需求变化带来的不良影响 2.4 实现方法 1) 封闭不变的 提取抽象层,封装接口。一个稳定的接口很重要。...原创 2020-02-06 11:34:50 · 175 阅读 · 0 评论 -
设计模式3-设计模式原则-单一职责
面向对象的三个特征:封装,继承,多态。 面向对象的优点:易扩展,易维护,可复用,灵活性好。 七大原则 1. 单一职责原则 1.1 描述 类职责单一,一个类只有一个引起变化的原因。解决了修改职责引起其他职责故障的风险。 1.2 优点 1) 功能单一,将类的复杂性。 2 )可读性强,提高系统的维护性 3) 变更引起的风险降低,一个类职责变变更,不会引起其他类职责出现问题。 1....原创 2020-02-06 11:21:39 · 124 阅读 · 0 评论