• 设计模式C++实现(2)——装饰模式

    时间:2022-10-01 22:54:26

    一:特点 (1) 装饰对象和真实对象有相同的接口。这样客户端对象就可以和真实对象相同的方式和装饰对象交互。 (2) 装饰对象包含一个真实对象的引用(reference) (3) 装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。 (4) 装饰对象可以在转发这些请求以前或以后增加一些附...

  • 《大话设计模式》读书笔记之C++实现--chapter22桥接模式

    时间:2022-10-01 20:44:51

    桥接模式的核心在于理解好继承属于is-a的关系,当我们使用继承的时候先要在心里问自己一遍子类是不是一个父类,如果答案是否,那我们就要考虑如何重新定义父类实现更好的抽象,此时我们可以联想到合成/聚合关系,合成代表的是一种强的拥有关系,也就是B是A的一部分,比如大雁的翅膀是大雁的一部分。聚合代表的是...

  • 我所理解的设计模式(C++实现)——原型模式(Prototype Pattern)

    时间:2022-10-01 19:51:56

    解决的问题: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。 类图结构:      客户(Client)角色:客户类提出创建对象的请求。抽象原型(Prototype)角色:这是一个抽象角色,通...

  • 设计模式之原型模式,C++实现

    时间:2022-10-01 19:47:16

    原创:http://blog.csdn.net/iuhsihsow 其实个人觉得原型模式在C++也就那样吧。反正设计一个类,如果有需要都会重载=或者设置深拷贝函数。 所以就简单写一下吧。 示意图,UML还是不太会 代码: #include "stdafx.h" #include <m...

  • 设计模式——备忘录模式(C++实现)

    时间:2022-09-16 23:56:03

    #include <iostream> #include <string> #include <vector> using namespace std; class STMemento { private: int iVitality; publ...

  • 设计模式---解释器模式(C++实现)

    时间:2022-09-09 09:10:33

            解释器模式(Interpreter Pattern)提供了评估语言的 或者表达式的方式,属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在SQL解析、符号处理引擎等。 意图          给定一个语言,定义它的文法表示,并定义一个解释器,这...

  • 设计模式C++实现(1)Singleton

    时间:2022-09-09 08:45:18

      以前是C程序员, 也会接触CSharp的WinForm编程, 对设计模式的CSharp实现有过一点点研究. 设计模式是一种可复用的思想, 和用什么语言实现无关, 这一点是不可争议的. 现在转做C++编程了, 发现在C++与CSharp或是Java的实现还是有一定的区别 最近买了一本<<...

  • 设计模式解析与实现(C++)之Factory模式

    时间:2022-09-06 18:43:01

    以下是一个具体的例子,很直观定义一个抽象产品 手机类 class Phone{public :virtual void call()=0;//打电话virtual void music()=0;//音乐virtual void internet()=0;//上网}; 实现产品类1:实现一个iphon...

  • 常见设计模式的解析和实现(C++)之二十一-完结篇

    时间:2022-09-06 18:43:01

      一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白了但是真正动手去做的时候发现其实还是不明白--我深知这个道理,于是不敢怠慢,不敢写什么所谓的解释原理的伪代码,不敢说所谓的"知道原理就可以了"....因为我知道,我还还没有资格说这个话,至少对...

  • 常见设计模式的解析和实现(C++)之二十一-完结篇

    时间:2022-09-06 18:43:07

    一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白了但是真正动手去做的时候发现其实还是不明白--我深知这个道理,于是不敢怠慢,不敢写什么所谓的解释原理的伪代码,不敢说所谓的"知道原理就可以了"....因为我知道,我还还没有资格说这个话,至少对于设...

  • 常见设计模式的解析和实现(C++)之三-Builder模式

    时间:2022-09-06 18:42:43

    作用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML结构图:适用于以下情况: 1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2)当构造过程必须允许被构造的对象有不同的表示时。抽象基类:1)Builder:这个基类是全部创建对象过程的抽象...

  • 常见设计模式解析和实现(C++)Adapt模式

    时间:2022-09-06 18:38:25

    作用:将一个类的接口转换成客户希望的另一个接口。Adapt模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。     UML示意图 1)      采用继承原有接口类的方式   2)采用组合原有接口类的方式   解析: Adapt模式其实就是把完成同样一个功能...

  • 常见设计模式解析和实现(C++)FlyWeight模式

    时间:2022-09-06 18:38:19

    作用:运用共享技术有效地支持大量细粒度的对象   UML结构图:   解析: Flyweight模式在大量使用一些可以被共享的对象的时候使用。比如,在QQ聊天时很多时候你懒得回复又不得不回复,一般会用一些客套的话语敷衍别人,如“呵呵”,“好的”等待之类的,这些简单的答复其实每个人都是...

  • 常见设计模式的解析和实现(C++)之一-Factory模式

    时间:2022-09-06 18:38:37

    常见设计模式的解析和实现(C++)之一-Factory模式作用:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。UML结构图:   抽象基类:1)Product:创建出来的对象的抽象基类.2)Factory创建对象的工厂方法的抽象基类....

  • 常见设计模式的解析和实现(C++)之九-Decorator模式

    时间:2022-09-06 18:38:31

    常见设计模式的解析和实现(C++)之九-Decorator模式作用:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator 模式相比生成子类更为灵活。UML结构图:抽象基类:1)Component:定义一个对象接口,可以为这个接口动态的添加职责.2)Decorator:维持一个指向C...

  • 常见设计模式的解析和实现(C++)之四-Prototype模式

    时间:2022-09-06 18:38:31

    作用: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 UML结构图: 抽象基类: 1)Prototype:虚拟基类,所有原型的基类,提供Clone接口函数 接口函数: 1)Prototype::Clone函数:纯虚函数,根据不同的派生类来实例化创建对象. 解析: Prototyp...

  • 常见设计模式解析和实现(C++)Prototype模式(原型模式)

    时间:2022-09-06 18:38:25

    作用:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 UML结构图:   抽象基类: 1)  Prototype:虚拟基类,所有原型的基类,提供Clone接口函数 接口函数: 1)  Prototype::Clone函数:纯虚函数,根据不同的派生类来实例化创建对象...

  • 设计模式——中介者模式/调停者模式(C++实现)

    时间:2022-09-06 18:24:47

    #include <iostream> #include <string> using namespace std; class Colleague; class Mediator { public: virtual void Send(string str...

  • 大话设计模式--状态模式 State -- C++实现实例

    时间:2022-09-02 16:35:44

    1.状态模式: 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来就像是改变了其类。状态模式解决的是当控制一个对象状态转换的条件表达式过于复杂, 把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。状态模式通过把各种状态转移逻辑分布到State的子类之间,减少相互之间...

  • Headfirst设计模式的C++实现——外观模式(Facade)

    时间:2022-06-06 00:46:48

    light.h#ifndef_LIGHT_H_#define_LIGHT_H_#include<iostream>classLIGHT{public:voiddim(intlevel){std::cout<<"LIGHTdimto"<<level<<s...