设计模式
_王川
屌丝程序员
展开
-
Singleton模式
作为设计模式中最简单、最常见、最容易实现,但也是最应该熟悉和掌握的模式,Singleton模式解决的问题十分常见:我们怎样去创建一个唯一地变量(对象)? singleton.h: #ifndef _SINGLETON_H_ #define _SINGLETON_H_ #include using namespace std; class Singleton{ public: stati原创 2014-03-01 17:47:31 · 909 阅读 · 0 评论 -
Strategy模式
Strategy模式和Template模式要解决的问题是相同的,都是为了给业务逻辑具体实现和抽象接口之间的解耦。 Strategy模式将逻辑封装到一个类里面,通过组合的方式将具体算法的实现在组合对象中实现,再通过委托的方式将抽象接口的实现委托给组合对象实现。 Strategy.h //strategy.h #ifndef _STRATEGY_H_ #define _STRATEGY_H_原创 2014-03-03 14:12:47 · 934 阅读 · 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 · 690 阅读 · 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 · 844 阅读 · 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 · 1089 阅读 · 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 · 1007 阅读 · 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 · 984 阅读 · 0 评论 -
Template模式
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架是相同的。Template提供了这种情况的实现框架。 Template.h //Template.h #ifndef _TEMPLATE_H_ #define _TEMPLATE_H_ class AbstractClass { public: vir原创 2014-03-03 13:55:13 · 945 阅读 · 0 评论 -
Decorator模式
Decorator模式解决以下情况:我们需要为一个已经定义好的类添加新的职责(操作),通常的情况我们会定义一个新类继承自定义好的类,这样会带来一个问题。通过继承的方式解决这样的情况还带来了系统的复杂性,因为继承的深度会变得很深。而Decorator模式提供了一种给类增加职责的方法,不是通过继承实现,而是通过组合。 Decorator.h //Decorator.h #ifndef _DECOR原创 2014-03-03 13:41:34 · 911 阅读 · 0 评论 -
Adapter模式
在软件系统设计和开发中,我们为了完成某项工作购买了一个第三方的库来加快开发。这就带来了一个问题:我们在应用程序中已经设计好了接口,与这个第三方提供的接口不一致,为了使得这些接口不兼容的类可以在一起工作,Adapter模式提供将一个类(第三方库)的接口转化为客户希望的接口。 Adapter模式的两种类别:类模式和对象模式 类模式: Adapter.h: #ifndef _ADAPTER_H_原创 2014-03-02 17:15:54 · 956 阅读 · 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 · 980 阅读 · 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 · 859 阅读 · 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 · 954 阅读 · 0 评论 -
Builder模式
Builder模式要解决的问题:当我们创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要把复杂的创建过程和这个对象的表示分离开来,这样做的好处就是通过一步步地进行复杂对象的构建,由于在每一步的构造过程中可以引入参数,使得经过相同的步骤创建最后得到的对象的展示不一样。 product.h: #ifndef _PRODUCT_H_ #define _PRODUCT_H_ clas原创 2014-03-01 23:37:09 · 846 阅读 · 0 评论 -
设计模式
创建型模式: Factory模式AbstractFactory模式Singleton模式原创 2014-03-01 17:52:50 · 803 阅读 · 0 评论