DesignPattern
文章平均质量分 74
l_stream
这个作者很懒,什么都没留下…
展开
-
十一、抽象工厂模式
抽象工厂模式(Abstract Factory)提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。AbstractFactory模式是为了创建一组(有多类)相关或依赖的对象提供创建接口,二Factory模式是为了一类对象提供创建接口或延迟对象的创建刀子类中实现。 //Product.h #ifndef _PRODUCT_H_ #define _PRODUCT_H_ u原创 2012-05-27 19:20:07 · 769 阅读 · 0 评论 -
一、简单工厂模式
//Operation.h #ifndef _OPERATION_H_ #define _OPERATION_H_ class Operation { public: double _numberA; double _numberB; Operation(); virtual ~Operation(); virtual double GetResult()=0; }; class Ope原创 2012-05-16 15:47:38 · 761 阅读 · 1 评论 -
二、策略模式
//Strategy.h #ifndef _STRATEGY_H #define _STRATEGY_H class Strategy { public: Strategy(); virtual ~Strategy(); virtual void AlgorithmInterface()=0; }; class ConcreteStrategyA :public Strategy { pub原创 2012-05-16 16:40:43 · 252 阅读 · 0 评论 -
三、装饰模式
装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 //Decorator.h #ifndef _DECORATOR_H #define _DECORATOR_H #include /*Component 类定义一个对象接口,可以给这些对象动态的添加指责*/ class Component { public: Comp原创 2012-05-18 11:02:31 · 237 阅读 · 0 评论 -
四、代理模式
代理模式(Proxy),为其他对象提供一种代理一控制对这个对象的访问。 //Proxy.h #ifndef _PROXY_H #define _PROXY_H /*Subject定义了ReadSubject和Proxy的公用接口 这也就在任何使用RealSubject的地方都可以使用Proxy*/ class Subject { public: Subject(); virtual ~S原创 2012-05-18 15:54:27 · 238 阅读 · 0 评论 -
五、工厂模式
工厂模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。 //Operation.h #ifndef _OPERATION_H_ #define _OPERATION_H_ class Operation { public: virtual double GetResult()=0; public: double原创 2012-05-21 20:43:06 · 373 阅读 · 0 评论 -
六、原型模式
原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 //Prototype.h #ifndef _PROTOTYPE_H #define _PROTOTYPE_H class Prototype { public: virtual ~Prototype(); virtual Prototype* Clone() const = 0; Proto原创 2012-05-22 10:20:19 · 422 阅读 · 0 评论 -
七、模版方法模式
模版方式模式(Template Method mode)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法似的子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤。换句话说,就是当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。我们可以通过模板方法模式把这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变形为的纠缠。 //Templ原创 2012-05-22 15:45:14 · 333 阅读 · 0 评论 -
九、建造者模式
建造者模式(Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 //Product.h #ifndef _PRODUCT_H_ #define _PRODUCT_H_ #include #include #include using namespace std; class CProduct { public: // 添加产品部件原创 2012-05-23 09:47:26 · 405 阅读 · 0 评论 -
八、外观模式
外观模式(Facade)为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 //Facade.h #ifndef _FACADE_H #define _FACADE_H class SubSystemOne { public: void Operation(); }; class SubSystemTwo { public: void原创 2012-05-22 16:46:11 · 311 阅读 · 0 评论 -
二十三、访问者模式
访问者模式(Visitor)表示一个作用于某对象结构中的各元素的操作。它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作。 //visitor.h #ifndef _VISITOR_H_ #define _VISITOR_H_ class Element; class Vistitor { public: virtual void VisitConcreteElementA(Ele原创 2012-06-04 16:17:52 · 327 阅读 · 0 评论 -
二十二、享元模式
享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象。 //Flyweight.h #ifndef _FLYWEIGHT_H_ #define _FLYWEIGHT_H_ #include #include using namespace std; class FlyWeight { public: virtual void Operation(const string&原创 2012-06-01 10:02:09 · 614 阅读 · 0 评论 -
十三、适配器模式
适配器模式(Adapter)将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的哪些类可以一起工作。 //Adapter.h #ifndef _ADAPTER_H_ #define _ADAPTER_H_ #include using namespace std; class Adaptee; class Tatget { public: vi原创 2012-05-28 19:49:08 · 333 阅读 · 0 评论 -
十二、状态模式
状态模式(State) 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 //state.h #ifndef _STATE_H_ #define _STATE_H_ class Context; class State { public: virtual void Handle(Context* context)=0; }; class ConcreteStat原创 2012-05-28 19:19:26 · 351 阅读 · 0 评论 -
十四、备忘录模式
备忘录(Memento)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 //Originator.h /* Originator(发起人)负责创建一个备忘录Memento,用以记录当前时刻他的内部状态 并可以使用备忘录恢复内部状态。 */ #ifndef _ORTIGINATOR_H_ #define _ORTIGINATO原创 2012-05-29 09:48:15 · 304 阅读 · 0 评论 -
十五、组合模式
组合模式(Composite)将对象组合成树形结构以表示“部分--整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 //Composite.h #ifndef _COMPOSITE_H_ #define _COMPOSITE_H_ #include #include #include using namespace std; class Component { pr原创 2012-05-29 16:25:48 · 299 阅读 · 0 评论 -
十七、单例模式
单例模式(Singleton) 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 //Singleton.h #ifndef _SINGLETON_H_ #define _SINGLETON_H_ class Singleton { private: Singleton(){}; static Singleton* _instance; public: static Single原创 2012-05-29 18:20:06 · 411 阅读 · 0 评论 -
十八、桥接模式
桥接模式(Bridge)将抽象部分与它的实现部分分离,使他们都可以独立的变化。 //Implementor.h #ifndef _IMPLEMENTOT_H_ #define _IMPLEMENTOT_H_ #include using namespace std; class Implementor { public: virtual void OperationImp()=0; };原创 2012-05-30 10:24:11 · 2210 阅读 · 0 评论 -
二十、职责链模式
职责链模式(Chain of Responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。 //Handler.h #ifndef _HANDLER_H_ #define _HANDLER_H_ #include using namespace std; class Handl原创 2012-05-31 09:39:34 · 849 阅读 · 0 评论 -
十九、命令模式
命令模式(Command) 将一个请求封装为一个对象,从而是你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 //Command.h /*Command类用来声明执行操作的接口*/ #ifndef _COMMAND_H_ #define _COMMAND_H_ #include "Receiver.h" class Command { protected:原创 2012-05-30 16:09:31 · 330 阅读 · 0 评论 -
二十一、中介者模式
中介者模式(Mediator)用一个中介对象来封装一系列的对象交互。中介者使个对象不需要现实的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 //Colleague.h #ifndef _COLLEAGUE_H_ #define _COLLEAGUE_H_ #include using namespace std; class Mediator; class Colleague原创 2012-05-31 18:40:03 · 329 阅读 · 0 评论 -
十、观察者模式
观察者模式(Observer)定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象。这个主题对象在状态发生变化时,会通知所有观察着对象,使他们能够自动更新自己。 //Subject.h #ifndef _SUBJECT_H_ #define _SUBJECT_H_ #include #include #include "Observer.h" class Subject { p原创 2012-05-23 16:56:17 · 312 阅读 · 0 评论