
设计模式
_王川
屌丝程序员
展开
-
Singleton模式
作为设计模式中最简单、最常见、最容易实现,但也是最应该熟悉和掌握的模式,Singleton模式解决的问题十分常见:我们怎样去创建一个唯一地变量(对象)?singleton.h:#ifndef _SINGLETON_H_#define _SINGLETON_H_#include using namespace std;class Singleton{public: stati原创 2014-03-01 17:47:31 · 959 阅读 · 0 评论 -
Strategy模式
Strategy模式和Template模式要解决的问题是相同的,都是为了给业务逻辑具体实现和抽象接口之间的解耦。Strategy模式将逻辑封装到一个类里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。Strategy.h//strategy.h#ifndef _STRATEGY_H_#define _STRATEGY_H_原创 2014-03-03 14:12:47 · 985 阅读 · 0 评论 -
Interpreter模式
Interpreter模式提供了一个实现语法解释器的框架Context.h//Context.h#ifndef _CONTEXT_H_#define _CONTEXT_H_class Context{public: Context(); ~Context();protected:private:};#endif //~_CONTEXT_H_Context.cpp原创 2014-03-03 15:20:07 · 742 阅读 · 0 评论 -
Iterator模式
Iterator模式用来解决对一个聚合对象的遍历问题。Aggregate.h//Aggregate.h#ifndef _AGGREGATE_H_#define _AGGREGATE_H_class Iterator;typedef int Object;class Interator;class Aggregate{public: virtual ~Aggrega原创 2014-03-03 15:10:32 · 894 阅读 · 0 评论 -
Prototype模式
Prototype模式通过复制原型(Prototype)而获得新对象创建的功能,这里Prototype本身就是“对象工厂”prototype.h:#ifndef _PROTOTYPE_H_#define _PROTOTYPE_H_class Prototype{public: virtual ~Prototype(); virtual Prototype* Clone() c原创 2014-03-02 16:34:40 · 1142 阅读 · 0 评论 -
Observer模式
Observer模式要解决的问题:建立一个一(Subject)对多(Observer)的依赖关系,当“一”变化的时候,依赖这个“一”的多也能够同步改变Subject.h//Subject.h#ifndef _SUBJECT_H_#define _SUBJECT_H_#include #include using namespace std;typedef string Sta原创 2014-03-03 14:57:24 · 1067 阅读 · 0 评论 -
State模式
State模式将状态逻辑和动作实现进行分离。当一个操作中要维护大量的case分支语句,并且这些分支依赖于对象的状态。State模式将每个分支都封装到独立的类中。State.h//state.h#ifndef _STATE_H_#define _STATE_H_class Context; //前置声明class State{public: State(); virtual原创 2014-03-03 14:37:23 · 1046 阅读 · 0 评论 -
Template模式
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架是相同的。Template提供了这种情况的实现框架。Template.h//Template.h#ifndef _TEMPLATE_H_#define _TEMPLATE_H_class AbstractClass{public: vir原创 2014-03-03 13:55:13 · 1008 阅读 · 0 评论 -
Decorator模式
Decorator模式解决以下情况:我们需要为一个已经定义好的类添加新的职责(操作),通常的情况我们会定义一个新类继承自定义好的类,这样会带来一个问题。通过继承的方式解决这样的情况还带来了系统的复杂性,因为继承的深度会变得很深。而Decorator模式提供了一种给类增加职责的方法,不是通过继承实现,而是通过组合。Decorator.h//Decorator.h#ifndef _DECOR原创 2014-03-03 13:41:34 · 975 阅读 · 0 评论 -
Adapter模式
在软件系统设计和开发中,我们为了完成某项工作购买了一个第三方的库来加快开发。这就带来了一个问题:我们在应用程序中已经设计好了接口,与这个第三方提供的接口不一致,为了使得这些接口不兼容的类可以在一起工作,Adapter模式提供将一个类(第三方库)的接口转化为客户希望的接口。Adapter模式的两种类别:类模式和对象模式类模式:Adapter.h:#ifndef _ADAPTER_H_原创 2014-03-02 17:15:54 · 1009 阅读 · 0 评论 -
Bridge模式
Bridge模式使用组合(委托)的方式将抽象和实现彻底解耦,抽象和实现可以分别独立的变化,系统耦合性降低abstraction.h:#ifndef _ABSTRACTION_H_#define _ABSTRACTION_H_class AbstractionImp;class Abstraction{public: virtual ~Abstraction(); virtu原创 2014-03-02 16:53:10 · 1023 阅读 · 0 评论 -
AbstractFactory模式
product,h:#ifndef _PRODUCT_H_#define _PRODUCT_H_class AbstractProductA{protected: AbstractProductA();public: virtual ~AbstractProductA();};class AbstractProductB{protected: AbstractProduc原创 2014-03-01 17:37:43 · 908 阅读 · 0 评论 -
Factory模式
看实现代码是理解设计模式的最好途径:product.h:#ifndef _PRODUCT_H_#define _PRODUCT_H_class Product{protected: Product();public: virtual ~Product();};class ConcreteProduct:public Product{public: ConcreteP原创 2014-03-01 17:16:59 · 1007 阅读 · 0 评论 -
Builder模式
Builder模式要解决的问题:当我们创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要把复杂的创建过程和这个对象的表示分离开来,这样做的好处就是通过一步步地进行复杂对象的构建,由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。product.h:#ifndef _PRODUCT_H_#define _PRODUCT_H_clas原创 2014-03-01 23:37:09 · 890 阅读 · 0 评论 -
设计模式
创建型模式:Factory模式AbstractFactory模式Singleton模式原创 2014-03-01 17:52:50 · 860 阅读 · 0 评论