设计模式
Gunner
磨砺成长成熟
展开
-
C++设计模式之五:SINGLETON(单件模式)
一、意图:保证一个类仅有一个实例,并提供一个全局的访问点。二、类图:三、组成元素:Singleton:需要提供唯一实例;构造函数要为private;四、代码实现:#include "iostream"using namespace std;class Singleton{private: static Singleton* un原创 2012-05-28 16:41:26 · 562 阅读 · 0 评论 -
C++设计模式之十八:Mementop(备忘录模式)
四、实现代码:#include "Memento.h"#include #include typedef std::string State;class Memento{private: friend class Originator; Memento(const State& rState); void SetState(const State& rState)原创 2012-06-07 15:32:56 · 598 阅读 · 0 评论 -
C++设计模式之十九:Observer(观察者模式)
四、代码实现:#include "iostream"#include "list"#include using namespace std;class Subject;class Observer;class Subject{public: virtual void attach(Observer* ob)=0; virtual void detch(Obser原创 2012-06-07 15:50:45 · 633 阅读 · 0 评论 -
C++设计模式之二十:State(状态模式)
四、实现代码:#include "iostream"using namespace std;class Context;class ConcreteStateA;class ConcreteStateB;class State{public: State() { } virtual void Handle(Context* pContext)=0;};cl原创 2012-06-07 15:52:13 · 669 阅读 · 0 评论 -
C++设计模式之二十一:Strategy(策略模式)
四、实现代码:#include "iostream"using namespace std;class Strategy{public: virtual void AlgorithmInterface()=0;};class ConcreteStrategyA:public Strategy{public: void AlgorithmInterface() {原创 2012-06-07 16:19:28 · 679 阅读 · 0 评论 -
C++设计模式之十六:Iterator 迭代器
...原创 2012-06-07 15:22:53 · 604 阅读 · 0 评论 -
C++设计模式之十七:Mediator(中介者模式)
四、实现代码:#include #include using namespace std;class Colleague;// 中介者类class Mediator{public: virtual void Send(string message, Colleague* col) = 0;};// 同事类class Colleague{public: C原创 2012-06-07 15:24:27 · 1179 阅读 · 0 评论 -
C++设计模式之二十二:Template Method(模板方法模式)
一、意图:定义算法骨架,将实现延迟到子类中。二、类图:三、组成元素: i. AbstractClass:抽象类,定义抽象的原语操作。 ii. ConcreteClass:具体实现类。原创 2013-08-23 09:33:35 · 694 阅读 · 0 评论 -
C++设计模式之二十三:Visitor(访问者模式)
一、意图:表示一个作用于某对象结构中的各元素的操作。可以在不改变类的前提下定义作用于这些元素的操作。二、 类图:三、组成元素: i. Visitor:访问者 ii. ConcreteVistor:具体的访问者 iii.原创 2013-08-23 09:57:39 · 737 阅读 · 0 评论 -
C++设计模式之十三:Chain of Responsibility(职责链)
一、意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。二、类图:三、组成元素:Handler:请求接口;ConcreteHandler:具体处理请求的接口;四、实现代码:#includeusing namespace std;clas原创 2012-05-29 21:16:12 · 695 阅读 · 0 评论 -
C++设计模式之十五:Interpretor 解释器
...原创 2012-06-07 15:22:32 · 595 阅读 · 0 评论 -
C++设计模式之三:Factory Method(工厂方法)
一、意图:定义一个用于创建对象的接口,让子类决定实例化哪个类;二、结构图:三、组成元素:Product:工厂方法抽象的对象接口;ConcreteProduct:具体对象实现类;Creator:创建器接口,返回Product对象;ConcreteCreator:实现Creator,返回ConcreteProduct对象;四、代码原创 2012-05-28 15:32:39 · 1357 阅读 · 0 评论 -
C++设计模式之十四:Command(命令)
一、意图:将请求封装成对象,从而可以用不同的请求对客户进行参数化,对请求排队、记录日志和支持可撤销的操作;二、类图:三、组成元素:Command:命令接口;ConcreteCommand:具体的命令;Invoker:命令执行者;Receiver:命令的接受者;四、实现代码:#include "iostream"usi原创 2012-05-29 21:29:53 · 786 阅读 · 0 评论 -
C++设计模式之九:Decorator(装饰)
一、意图:动态的给对象添加二外的职责,相比于生成子类来说更为灵活;二、类图:三、组成元素:Component:对象接口,可以给这些对象动态添加功能;ConcreteComponent:具体对象;Decorator:修饰接口;ConcreteDecorator:向组件添加功能;四、实现代码:#include using name原创 2012-05-28 21:01:32 · 766 阅读 · 0 评论 -
C++设计模式之一:Abstract Factory(抽象工厂)
一:意图提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类;二:类图三、组成元素:AbstractFactory:声明一个抽象产品对象的操作接口;ConcreteFactroy:实现创建对象的具体操作;AbstractProduct:一类产品的抽象接口;Product:被相应工厂创建的具体产品;四、实现:#inclu原创 2012-05-28 14:06:00 · 907 阅读 · 0 评论 -
C++设计模式之二:Builder(生成器)
一、意图:将一个复杂对象的构建与其表示分离,同样的构建过程可以创建不同的表示;二、类图:三、组成元素:Builder:创建对象的抽象接口;ConcreteBuilder:实现Builder接口并构建对象产品的各个部件;Director:构建一个使用Builder的接口;Product:对象产品;四、实现代码:#include原创 2012-05-28 14:33:38 · 696 阅读 · 0 评论 -
C++设计模式之六:Adapter(适配器)
一、意图将一个类的几口转换成客户希望的另外一个借口。Adapter模式使得原先由于借口不兼容而不能一起工作的哪些类可以一起工作。可以理解为手机的usb数据线,既能充电,又能传输数据。二、结构图Adapter模式分为两种:类适配器和对象适配器;1.类适配器:采用多重继承实现;2.对象适配器:采用组合实现;三、组成元素原创 2012-04-26 09:29:42 · 786 阅读 · 0 评论 -
C++设计模式之七:Bridge(桥接器)
一、意图:将抽象部分与实现部分分离,增加灵活性;二、类图:三、组成元素:Abstraction:抽象类接口;RefinedAbstraction:扩展Abstraction的接口;Implementor:实现类接口;ConcreteImplementor:具体实现类;四、代码实现;#include "iostream"us原创 2012-05-28 19:14:52 · 838 阅读 · 0 评论 -
C++设计模式之八:Composite(组合)
一、意图:将对象组合成树形结构以表示成“部分-整体”的层次结构;二、类图:三、组成元素:Component:顶层接口,用于访问子组件;Leaf:叶节点,没有子节点;Composite:用于存储子节点;四、代码实现:#include #include #include #include class Component{原创 2012-05-28 20:50:46 · 1743 阅读 · 0 评论 -
C++设计模式之十:Facade(外观)
一、意图:为子系统提供一致的界面,Facade定义高层接口,从而使子系统的使用更加方便;二、类图(截图自《大话设计模式》):三、组成元素:Facade:代理客户请求给子系统;SubSys:子系统;四、代码实现:#include#include using namespace std;//系统类class SubSysOn原创 2012-05-28 21:12:39 · 689 阅读 · 0 评论 -
C++设计模式之十一:Flyweight(享元)
一、意图:运用共享技术有效地支持大量细粒度的对象;二、类图:三、组成元素:Flyweight:接受并作用于外部状态的接口;ConcreteFlyweight:实现Flyweight,并为内部状态提供存储空间,这个对象必须是可以共享的;UnshareConcreteFlyweight:不可共享的对象;FlyweightFactory:创建并管理fl原创 2012-05-29 20:40:13 · 843 阅读 · 0 评论 -
C++设计模式之十二:Proxy(代理)
一、意图:提供代理以控制对象的访问;二、类图:三、组成元素:Subject:公共接口;Proxy:代理,保存引用用以访问对象;RealSubject:定义Proxy所代表的实体;四、实现代码:#include "iostream"using namespace std;class Subject{public:原创 2012-05-29 20:52:26 · 702 阅读 · 0 评论 -
C++设计模式之四:Prototype(原型模式)
一、意图:用圆形实例制定创建对象的种类,并且通过拷贝创建新的对象;二、类图:三、组成元素:Prototype:声明克隆自身的接口;ConcretePrototype:实现克隆自身的操作;四、实现代码:#include using namespace std;class Prototype {private: int nu原创 2012-05-28 15:59:42 · 785 阅读 · 0 评论