设计模式笔记
文章平均质量分 80
设计模式笔记
17RuntimeError
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式_24 备忘录模式
设计模式_24 备忘录模式24 备忘录模式24.1 概念24.2 结构24.3 实现24.3.1 白箱备忘录模式24.3.1.1 UML图24.3.1.2 代码24.3.2 黑箱备忘录模式24.3.2.1 UML图24.3.2.2 代码24.4 优缺点24.4.1 优点24.4.2 缺点24.5 使用场景return 设计模式概述;24 备忘录模式24.1 概念存档,撤销。在不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时,能将该对象恢复到原先保存的状态。2原创 2022-02-26 21:05:20 · 357 阅读 · 0 评论 -
设计模式_23 访问者模式
设计模式_23 访问者模式23 访问者模式23.1 概念23.2 结构23.3 实现23.3.1 UML图23.3.2 代码23.4 优缺点23.4.1 优点23.4.2 缺点23.5 使用场景23.6 分派23.6.1 定义23.6.2 双分派return 设计模式概述;23 访问者模式23.1 概念封装了一些作用于某种数据结构中的各元素的操作,可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。23.2 结构抽象访问者角色:定义了对每一个元素访问的行为,它的参数就是可以访问的元素,它的原创 2022-02-25 18:38:44 · 487 阅读 · 0 评论 -
设计模式_22 迭代器模式
设计模式_22 迭代器模式22 迭代器模式22.1 概念22.2 结构22.3 实现22.3.1 UML图22.3.2 代码22.4 优缺点22.4.1 优点22.4.2 缺点22.5 使用场景return 设计模式概述;22 迭代器模式22.1 概念提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象内部表示。22.2 结构抽象聚合角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。具体聚合角色:实现抽象聚合类,返回一个具体迭代器的实例。抽象迭代器角色:定义访问和遍历聚合元原创 2022-02-25 12:38:29 · 444 阅读 · 0 评论 -
设计模式_21 中介者模式
设计模式_21 中介者模式21 中介者模式21.1 概念21.2 结构21.3 实现21.3.1 UML图21.3.2 代码21.4 优缺点21.4.1 优点21.4.2 缺点21.5 使用场景return 设计模式概述;21 中介者模式21.1 概念定义一个中介角色来封装一系列对象之间的交互,使原有对象之间耦合松散,且可独立的改变他们之间的交互。多个类之间互相关联,呈现复杂网状结构,过度耦合。引入中介者模式,将类之间关系变为星型结构。任何一个类的变动只会影响类本身和中介者。21.2 结构抽象中原创 2022-02-24 22:52:04 · 373 阅读 · 0 评论 -
设计模式_20 观察者模式(含 UML图 和 C++代码)
设计模式_20 观察者模式20 观察者模式20 .1 概念20 .2 结构20 .3 实现20 .3.1 UML图20 .3.2 代码20 .4 优缺点20 .4.1 优点20 .4.2 缺点20 .5 使用场景return 设计模式概述;20 观察者模式20 .1 概念又被称为发布-订阅模式,它定义了一种一对多的依赖关系,让多个观察者同时监听某一主题对象。该主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。20 .2 结构抽象主题(抽象被观察者)角色:把所有观察者对象保存在一原创 2022-02-23 22:07:19 · 2203 阅读 · 0 评论 -
设计模式_19 状态模式(含 UML图 和 C++代码)
设计模式_19 状态模式19 状态模式19.1 概念19.2 结构19.3 实现19.3.1 UML图19.3.2 代码19.3.3 测试结果19.4 优缺点19.4.1 优点19.4.2 缺点19.5 使用场景return 设计模式概述;19 状态模式加油,你可以的。(PS:状态模式给我整吐了,阿西吧。)19.1 概念对有状态的角色,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部发生改变时改变其行为。例如进程管理中就绪态、阻塞态、运行态之间的切换,阻塞态的进程不能直接切换到运行原创 2022-02-23 19:03:33 · 908 阅读 · 0 评论 -
设计模式_18 责任链模式(含 UML图 和 C++代码)
设计模式_18 责任链模式17 命令模式16.1 概念16.2 结构16.3 实现16.3.1 UML图16.3.2 代码16.4 优缺点16.4.1 优点16.4.2 缺点return 设计模式概述;17 命令模式16.1 概念为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一对象的引用而连成一条链。有请求发生时,可将请求沿着这条链传递,直到有对象处理为止。16.2 结构抽象处理者角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。具体处理者角色:原创 2022-02-23 14:09:30 · 845 阅读 · 0 评论 -
设计模式_17 命令模式(含 UML图 和 C++代码)
设计模式_17 命令模式17 命令模式16.1 概念16.2 结构16.3 实现16.3.1 UML图16.3.2 代码16.4 优缺点16.4.1 优点16.4.2 缺点16.5 使用场景return 设计模式概述;17 命令模式16.1 概念将一个请求封装为一个对象,使发出请求的责任与执行请求的责任分割开。这样两者之间通过命令对象进行沟通,方便将命令对象进行存储、传递、调用、增加和管理。16.2 结构抽象命令角色:定义命令的接口,声明执行的方法。具体命令角色:具体的命令,实现命令接口。通常会原创 2022-02-22 21:24:37 · 514 阅读 · 0 评论 -
设计模式_16 策略模式(含 UML图 和 C++代码)
设计模式_16 策略模式16 策略模式16.1 概念16.2 结构16.3 实现16.3.1 UML图16.3.2 代码16.4 优缺点16.4.1 优点16.4.2 缺点16.5 使用场景16 策略模式16.1 概念该模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同对象对这些算法进行管理。16.2 结构抽象策略类:通常由一个接口或抽象类来实现。此角色原创 2022-02-22 20:07:28 · 1709 阅读 · 0 评论 -
设计模式_15 模板方法模式(含 UML图 和 C++代码)
设计模式_15 模板方法模式15 模板方法模式15.1 概念15.2 结构15.3 实现15.3.1 UML图15.3.2 代码15.4 优缺点15.4.1 优点15.4.2 缺点15.5 使用场景return 设计模式概述;15 模板方法模式15.1 概念定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以在不改变算法结构的情况下重定义该算法某些特定实现步骤。15.2 结构抽象类:负责给出一个算法的轮廓和骨架。由一个模板和若干个方法组成。–模板方法:定义了算法的骨架,按某种顺原创 2022-02-22 11:02:54 · 641 阅读 · 0 评论 -
设计模式_14 享元模式(含 UML图 和 C++代码)
设计模式_14 享元模式14 组合模式14.1 概念14.2 结构14.2.1 状态14.2.2 角色14.3 实现14.3.1 UML图14.3.2 代码14.4 优缺点14.4.1 优点14.4.2 缺点14.5 使用场景retur 设计模式概述;14 组合模式14.1 概念利用共享技术来有效支持大量细粒度对象的复用。通过共享已经存在的对象来大幅度减少需要创建的对象数量,避免大量相似对象的开销,提高系统资源利用率。14.2 结构14.2.1 状态内部状态:不会随着环境改变而改变的可共享部分。原创 2022-02-22 10:08:40 · 338 阅读 · 0 评论 -
设计模式_13 组合模式(含 UML图 和 C++代码)
设计模式_13 组合模式13 组合模式13.1 概念13.2 结构13.3 实现13.3.1 UML图13.3.2 代码13.3.3 测试结果13.4 分类13.4.1 透明组合模式13.4.2 安全组合模式13.5 优点13.6 使用场景retur 设计模式概述;13 组合模式13.1 概念用于把一组相似的对象当做一个单一的对象。组合模式依据树形结构来组合对象,用于表示部分以及整体的层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。13.2 结构抽象根节点:定义系统各层次对象的共原创 2022-02-21 22:04:01 · 646 阅读 · 0 评论 -
设计模式_12 外观模式(含 UML图 和 C++代码)
设计模式_11 外观模式12 外观模式12.1 概念12.2 结构12.3 实现12.3.1 UML图12.3.2 代码12.4 优缺点12.4.1 优点12.4.2 缺点12.5 使用场景retur 设计模式概述;12 外观模式12.1 概念通过为多个复杂子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不必关注内部子系统的具体实现细节。降低了程序的复杂度,提高了程序的可维护性。迪米特法则的典型应用。和代理模式的区别:代理模式是通过继承方式完成同原创 2022-02-21 12:10:25 · 256 阅读 · 0 评论 -
设计模式_11 桥接模式(含 UML图 和 C++代码)
设计模式_10 桥接模式10 桥接模式10.1 概念10.2 结构10.3 实现10.3.1 UML图10.3.2 代码10.4 优点10.5 使用场景return 设计模式概述;10 桥接模式10.1 概念将抽象与实现分离,使他们可以独立变化。用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。10.2 结构抽象化角色:定义抽象类,并包含一个对实现化对象的引用。扩展抽象化角色:抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。实现化角色:原创 2022-02-21 11:10:08 · 599 阅读 · 0 评论 -
设计模式_10 装饰者模式(含 UML图 和 C++代码)
设计模式_10 装饰者模式10 装饰者模式10.1 概述10.2 功能10.3 实现10.3.1 UML图10.3.2 代码10.4 优点10.5 使用场景return 设计模式概述;10 装饰者模式10.1 概述在不改变现有对象结构的前提下,动态的给对象增加一些额外功能的模式。10.2 功能抽象构件角色:定义一个抽象接口以规范准备接收附加责任的对象。具体构件角色:实现抽象构件,通过装饰角色为其添加一些职责。抽象装饰角色:继承或实现抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功原创 2022-02-19 18:32:40 · 860 阅读 · 0 评论 -
设计模式_09 适配器模式(含 UML图 和 C++代码)
设计模式_09 适配器模式9 适配器模式9.1 概述9.2 结构9.3 实现9.3.1 类适配器模式实现9.3.1.1 UML图9.3.1.2 代码9.3.2 对象适配器模式实现9.3.2.1 UML图9.3.2.2 代码9.4 使用场景return 设计模式概述;9 适配器模式9.1 概述将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容不能一起工作的类可以协同工作。适配器模式分为类适配器模式和对象适配器模式。9.2 结构目标接口:当前系统业务所期待的接口,可以是抽象类或接口。原创 2022-02-19 14:36:29 · 741 阅读 · 0 评论 -
设计模式_08 代理模式(含 UML图 和 C++代码)
设计模式_08 代理模式8 代理模式8.1 概述8.2 结构8.3 实现8.3.1 UML图8.3.2 代码8.4 优缺点8.4.1 优点8.4.2 缺点8.5 使用场景8.5.1 远程代理(RPC)8.5.2 防火墙代理(VPN)8.5.3 保护代理return 设计模式概述;8 代理模式8.1 概述由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时访问对象不适合或不能直接引用目标对象,代理对象作为中介。8.2 结构抽象主题类:通过接口或抽象类声明真实主题和代理对象实现的业务方法。原创 2022-02-19 11:43:51 · 541 阅读 · 0 评论 -
设计模式_07 建造者模式(含 UML图 和 C++代码)
设计模式_07 建造者模式7. 建造者模式7.1 概述7.2 结构7.3 实现7.3.1 UML图7.3.2 代码7. 建造者模式7.1 概述将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的对象。7.2 结构抽象建造者(Builder):这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的对象部件的创建。具体建造者(ConcreteBuilder):实现Builder接口,完成复杂对象的各个部分的具体创建方法。在构造过程完成后,提供产品的实例。产品类:要创建的复杂对象。原创 2022-02-18 18:20:28 · 943 阅读 · 0 评论 -
设计模式_06 原型模式(含 UML图 和 C++代码)
设计模式_06 原型模式原型模式概述结构实现分类UML图代码设计模式概述原型模式概述用一个已经创建的实例为原型,通过复制该对象来创建一个和原型对象相同的新对象。结构抽象原型类:规定了具体原型对象必须实现的 clone() 方法。具体原型类:实现抽象原型的 clone() 方法,它是可被复制的对象。访问类:使用具体原型类中的 clone() 方法来复制新对象。实现分类浅克隆:创建一个新的对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。深克隆原创 2022-02-18 10:38:56 · 372 阅读 · 0 评论 -
设计模式_05 工厂模式(含 UML图 和 C++代码)
设计模式_05 工厂模式工厂模式简单工厂模式结构实现UML图代码工厂模式抽象模式工厂模式简单工厂模式结构抽象产品:定义了产品的规范,描述了产品的主要特性和性能。具体产品:实现或继承抽象产品的子类。具体工厂:提供了创建产品的方法,调用者通过该方法来获取产品。实现UML图代码class coffee {public: virtual string getName() = 0; void addMilk() { cout << "加奶" << endl;原创 2022-02-18 09:37:55 · 1759 阅读 · 0 评论 -
设计模式_04单例模式(含 UML图 和 C++代码)
设计模式_04单例模式单例模式单例模式分类饿汉式懒汉式双重检查锁单例模式单例模式属于创建型模式。涉及到一个单一的类,该类负责创建自己的对象。同时确保只有单一对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式分类饿汉式类加载就会导致该单例对象被创建。通过静态成员变量的方式创建。代码:// 饿汉式class singleton_hungry {private: singleton_hungry() {} static singleton_h原创 2022-02-13 20:34:08 · 655 阅读 · 0 评论 -
设计模式_03 六大设计原则(含 C++代码)
设计模式_03 六大设计原则设计模式_03 六大设计原则开闭原则里氏代换原则依赖倒转原则接口隔离原则迪米特法则合成复用原则设计模式_03 六大设计原则开闭原则对扩展开放,对修改关闭。通过接口和抽象类来实现。代码实现:class Abstract_father {public: virtual void func() = 0;};class son1 : Abstract_father {public: void func() { cout << "son1" <原创 2022-02-13 16:05:20 · 805 阅读 · 0 评论 -
设计模式_02 UML类图
设计模式_02 UML类图UML类图表示方式类与类之间的关系关联关系聚合关系组合关系依赖关系继承关系实现关系UML类图表示方式类图包含:类,接口,成员变量,成员函数+:表示pubic-:表示private#:表示protected例如:[- name string; + addMember() void;]类与类之间的关系关联关系关联关系是对象之间的一种引用关系单向关联带箭头的实线表示双向关联不带箭头的直线表示自关联指向自己的箭头聚合关系成员对象是整体的一部分,但是可以原创 2022-02-12 21:52:30 · 660 阅读 · 0 评论 -
设计模式_01 设计模式概述
设计模式_01 设计模式概述设计模式设计模式的六大原则开闭原则(Open Close Principle)里氏代换原则(Liskov Substitution Principle)依赖倒转原则(Dependence Inversion Principle)接口隔离原则(Interface Segregation Principle)迪米特法则(Demeter Principle)合成复用原则(Composite Reuse Principle)设计模式类型创建型模式工厂模式(Factory Pattern)原创 2022-02-10 22:06:29 · 674 阅读 · 0 评论
分享