design pattern
文章平均质量分 63
代码与单车
这个作者很懒,什么都没留下…
展开
-
【设计模式】之三Observer
Type: Behavioral观察者模式:在对象间定义一对多的依赖关系,这样当一个对象改变状态时,自动通知更新依赖他的对象。#include #include using namespace std; typedef int STATE;class Observer{public: virtual void update(STATE state) = 0;};原创 2013-04-07 20:51:21 · 524 阅读 · 0 评论 -
【设计模式】之十七Flyweight
Type: StructuralFlyweight: 避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类)。找出这些对象群的共同点,设计一个元类,封装可以被共享的类。另外,还有一些特性是取决于应用(context),是不可共享的,这也Flyweight中两个重要概念内部状态intrinsic和外部状态extrinsic之分。#include #include原创 2013-04-17 22:45:19 · 388 阅读 · 0 评论 -
【设计模式】之十八Proxy
Type: StructuralProxy: 提供一个替代品或者占位符来控制对一个对象的访问。#include using namespace std;class Subject{public: virtual void request()=0;}; class RealSubject: public Subject{public: void req原创 2013-04-18 15:21:41 · 532 阅读 · 0 评论 -
【设计模式】之十九Abstract Factory
Type: CreationalAbstract Factory: 提供一个借口创建一系列相关或者依赖的对象,而无需指定 其实现类。如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式。Abstract Factory模式主要在于应对“新系列”的需求变动。缺点是难以应对“新对象”的需求变动。Abstract Factory模式经常和Facto原创 2013-04-18 16:33:50 · 514 阅读 · 0 评论 -
【设计模式】之二十二Prototype
Type: CreationalPrototype: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。#include using namespace std;class Prototype{public: virtual Prototype* clone()= 0; int mType; };class ConcretePrototyp原创 2013-04-18 22:04:10 · 647 阅读 · 0 评论 -
【设计模式】之十六Facede
Type: StructuralFacade: 为子系统中的一组接口提供一个一致的界面。典型应用是数据库JDBC的应用。Jsp中常用的操作数据库的方法如下:public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; tr原创 2013-04-17 21:25:37 · 538 阅读 · 0 评论 -
【设计模式】之十三Bridge
Type: StructuralBridge: 将抽象与其实现解耦,这样两者可以独立地变化。#include using namespace std;class Implementor{public: virtual void operationImpl() = 0;};class ConcreteImplementorA: public Implementor原创 2013-04-17 14:33:41 · 489 阅读 · 0 评论 -
【设计模式】之六Interpreter
Type: BehavioralInterpreter:给定一个语言,定义其语法的含义,同时拦截器利用其含义拦截其中的句子。#include #include #include using namespace std; class Context { public: Context(string pInput):mInput(pInp原创 2013-04-16 10:12:40 · 530 阅读 · 0 评论 -
【设计模式】之四Command
Type: Behavioral#include #include using namespace std;class Receiver{public: void action() { cout <<"Receiver Action"<<endl;; }};class Command{public: virtual void e原创 2013-04-15 15:57:52 · 534 阅读 · 0 评论 -
【设计模式】之九Template Method
Type: BehavioralTemplate Method:在一个操作中定义一个算法的骨架,将一些步骤推迟到子类中。让子类在不修改算法结构的基础上重新定义其中步骤。#include using namespace std;class AbstractClass{public: void templateMethod() { cout<<原创 2013-04-16 16:28:35 · 528 阅读 · 0 评论 -
【设计模式】之十一Visitor
Type: BehavioralVisitor: Visitor提供要对对象结构中元素执行的操作。让你可以在不修改其操作的元素的情况下定义新操作。在元素类型很少改变的情况下适用。#include using namespace std;class ConcreteElementA;class ConcreteElementB;class Visitor{public:原创 2013-04-16 21:34:13 · 543 阅读 · 0 评论 -
【设计模式】之七Strategy
Type: BehavioralStrategy模式:定义一系列的算法,封装每一个,使他们实现通用。让算法相对于使用他的clients可以独立地变化。#include using namespace std;class Strategy{public: virtual void execute() = 0;}; class ConcreteStrategyA原创 2013-04-16 10:38:02 · 476 阅读 · 0 评论 -
【设计模式】之八Iterator
Type: BehavioralIterator:提供一个方法连续访问一个聚合对象的元素,同时不暴露其底层表示#include using namespace std;#define Data intclass Iterator{public: virtual Data* next()=0;};class ConcreteIterator: public Ite原创 2013-04-16 15:45:51 · 592 阅读 · 0 评论 -
【设计模式】之十Mediator
Type: BehavioralMediator: 定义一个对象,包装一系列对象如何交互。这些对象不必明确地互相引用,从而促进松散耦合,并且能够使你独立地改变他们之间的交互。#include using namespace std;class Mediator{public: virtual void inform(int id)=0;};原创 2013-04-16 19:32:06 · 492 阅读 · 0 评论 -
【设计模式】之一Memento
开始研究设计模式。一个非常perfect的设计模式示意图http://www.mcdonaldland.info/2007/11/28/40/Type: BehavioralMemento:模式在不破坏封装性的情况下,捕获一个对象的内部状态传递到外部,使得稍后可以将该对象恢复到这个状态。代码参考了http://www.cppblog.com/converse/archive/2006/08原创 2013-04-03 22:19:12 · 524 阅读 · 0 评论 -
【设计模式】之十二Adapter
Type: StructuralAdapter: 将一个类的接口转换成clients期望的另一个接口。类不会因为接口不兼容而无法一起工作。 实现方式有两种,继承和委让。这里使用的是委让。#include using namespace std;class Adapter{public: virtual void operation()=0;};原创 2013-04-16 22:25:06 · 452 阅读 · 0 评论 -
【设计模式】之二Chain of Responsibility
Type: Behavioral#include using namespace std;typedef int Request;class Handler{public: Handler(Handler *pSuccessor = NULL):m_pSuccessor(pSuccessor){}; // 纯虚函数,由派生类实现 virtual void handleReques原创 2013-04-04 20:04:37 · 548 阅读 · 0 评论 -
【设计模式】之五State
Type: BehavioralState模式:允许一个对象在其内部状态改变的时候改变其行为。#include using namespace std;class State;class Context{public: Context(State* pState): mState(pState){}; void request(); void se原创 2013-04-15 21:26:37 · 509 阅读 · 0 评论