设计模式
永远的麦田
资深程序员,爱程序,爱生活
展开
-
设计模式中结构型模式(四)装饰模式(Decorator)
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。使用继承机制是添加功能的一种有效途径,从其它类继承过来的边框特性可以被多个子类的实例使用。但这种方法不够灵活。因为边框的选择是静态的,用户不能控制对原创 2008-04-26 18:08:00 · 554 阅读 · 0 评论 -
设计模式中结构型模式(六)享元模式(Facade)
运用共享技术有效地支持大量细粒度的对象。FlyWeight是一个共享对象,它可以同时在多个场景(context)中使用,并且在每个场景中flyweight都可以作为一个独立的对象——这一点与非共享的实例没有区别。flyweight不能对它所运行的场景做出任何假充,这里的关键概念是内部状态和外部状态之间的区别是。内部状态存储于flyweight中,它包含了独立于flyweight场景的信息,这些原创 2008-04-29 17:30:00 · 733 阅读 · 0 评论 -
设计模式之(State)模式
意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。别名:状态对象(Objects for States)3、动机考虑一个表示网络连接的类TCPConnection。一个TCPConnection对象的状态处于若干不同状态之一:连接已建立(Established),正在监听(Listening),连接已关闭(Closed)。当一个TCPConnection对象收到其他对象原创 2008-05-06 18:26:00 · 715 阅读 · 0 评论 -
设计模式(四)factory,Polymorphic factories,Abstract factories
强制一个通用的工厂来创建对象,而不允许将创建对象的代码散布于整个系统。如果程序中所有需要创建对象的代码都转到这个工厂执行,那么在增加新对象时所要做的全部工作就是只需修改工厂。 //: C10:ShapeFactory1.cpp#include #include #include #include #include #include "../purge.h"using namespace std; class Shape {public: virtual void draw() = 0; vir原创 2011-01-09 15:40:00 · 552 阅读 · 0 评论 -
设计模式二,Proxy,State,Adapter,Template Method
Proxy,可以理解为本身不提供实现方式,通过接口调用具体的实现。 //: C10:ProxyDemo.cpp// Simple demonstration of the Proxy pattern.#include using namespace std; class ProxyBase {public: virtual void f() = 0; virtual void g() = 0; virtual void h() = 0; virtual ~ProxyBase() {}}; class原创 2011-01-08 12:35:00 · 485 阅读 · 0 评论