大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks

Design Pattern

     摘要: 常用设计模式  阅读全文
posted @ 2009-06-15 11:25 大胖 阅读(663) | 评论 (0)  编辑

     摘要: State模式  阅读全文
posted @ 2009-06-10 16:23 大胖 阅读(150) | 评论 (0)  编辑

     摘要: Visitor模式  阅读全文
posted @ 2009-06-10 16:02 大胖 阅读(196) | 评论 (0)  编辑

     摘要: 基类中定义了一个算法的轮廓,算法每一步具体的实现留给了派生类。  阅读全文
posted @ 2009-06-10 15:22 大胖 阅读(108) | 评论 (0)  编辑

     摘要: 当一个subject的状态变化时,多个observer的状态需要跟着变化。
subject内部存放多个observer的指针,observer提供一个更新自身状态的接口供subject调用。
当subject状态变化时,调用observer的更新接口。  阅读全文
posted @ 2009-06-10 15:12 大胖 阅读(131) | 评论 (0)  编辑

     摘要: 在不破坏封装性的前提下,捕获一个对象(Originator)的内部状态,并在该对象之外(memento)保存这个状态,这样以后就可将该对象恢复到原先保存的状态。
Memento除了析构函数,其它成员均为私有,将Originator声明为友元,只允许它访问。Memento中保存了Originator的状态。  阅读全文
posted @ 2009-06-10 14:33 大胖 阅读(111) | 评论 (0)  编辑

     摘要: 用一个中介对象Mediator来封装其它对象之间的交互,每个其它类型的对象只与Mediator交互。
每个其它类型对象都包含有同一个Mediator指针,Mediator中包含有所有其他类型对象指针。
每个其它类型对象调用Mediator接口,由Mediator对其它对象进行操作。  阅读全文
posted @ 2009-06-10 11:48 大胖 阅读(175) | 评论 (0)  编辑

     摘要: 封装一个Iterator类,提供方法访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
这样可以对同一个聚合同时有多个遍历。  阅读全文
posted @ 2009-06-10 10:38 大胖 阅读(129) | 评论 (0)  编辑

     摘要: 将要执行的命令封装在Receiver类中,执行命令的指令封装在Command类中,Command类保存一个Receiver指针。
先注册一个命令(将Receiver传给Command);
再执行命令(调用Command的函数,来调用Receiver的函数),在执行命令前可以取消注册的命令(删除Command中的Receiver)。
类似函数回调,先注册一个函数,需要时再调用。  阅读全文
posted @ 2009-06-10 10:05 大胖 阅读(124) | 评论 (0)  编辑

     摘要: 每一个handler保存了一个handler指针,用来指向下一个handler,形成一个handler链。
当一个handler收到一个request的时候,可以选择自己处理或者转给下一个handler处理。  阅读全文
posted @ 2009-06-10 09:23 大胖 阅读(98) | 评论 (0)  编辑

     摘要: 具体实现类继承于抽象基类,Proxy类也继承于抽象基类,并有一个实现类类型的指针,当需要时才创建实现类对象,调用实现类的函数。  阅读全文
posted @ 2009-06-09 20:43 大胖 阅读(106) | 评论 (0)  编辑

     摘要: 对同样内容的对象,只创建一份。
需要显示对象时,若对象存在,则返回已存在对象的地址;若不存在,则创建对象再返回。  阅读全文
posted @ 2009-06-09 16:55 大胖 阅读(115) | 评论 (0)  编辑

     摘要: Fasade模式提供一个简单接口,调用复杂的子系统接口。  阅读全文
posted @ 2009-06-09 16:14 大胖 阅读(130) | 评论 (0)  编辑

     摘要: 当想针对某个子类对象添加新功能时,可以不采用继续继承该子类产生新的派生类的方法。
Decorator更加灵活地动态扩展目标子类。
从基类新派生的Decorator类保存了基类类型的指针,重写了需要扩展功能的函数。
Decorator类对象构造时传入基类类型指针(实际指向目标子类),这样内部可以调用目标子类的方法,重写时调用目标子类方法,并加入新的操作。
Decorator对象就可以取代目标子类对象,可以调用原来的操作,还加入了新的操作,且类型都为基类类型。  阅读全文
posted @ 2009-06-09 15:56 大胖 阅读(154) | 评论 (0)  编辑

     摘要: Component使用户对组合对象和单一对象的操作具有一致性。
无论是组合对象还是单一对象,都从抽象基类派生;抽象基类声明所有对象共有的操作和组合对象特有的操作。
单一对象在重写针对组合对象的操作时可返回错误。
这样用户可以用同样的代码操作抽象基类类型指针,实现对组合对象和单一对象的操作,而无需关心操作对象具体类型是什么。  阅读全文
posted @ 2009-06-09 15:16 大胖 阅读(154) | 评论 (0)  编辑

     摘要: 将抽象与实现分离,对实现部分的修改,不会影响抽象部分的代码。  阅读全文
posted @ 2009-06-09 14:32 大胖 阅读(145) | 评论 (0)  编辑

     摘要: 当需求的接口描述和已经存在的实现不匹配时,可以通过继承和组合两种方法实现adapter模式,从而用已有的实现满足需求。
  阅读全文
posted @ 2009-06-09 10:37 大胖 阅读(105) | 评论 (0)  编辑

     摘要: 当要创建的对象的内容与一个已经创建的对象内容相同时,无需再重新输入相同参数创建对象,可以利用拷贝构造函数创建已知对象的拷贝。
ProtoType所提供的接口就是对自身拷贝构造函数的封装。  阅读全文
posted @ 2009-06-09 09:59 大胖 阅读(120) | 评论 (0)  编辑

     摘要: 一个复杂对象的创建包括两个部分:每个部分的创建和按照一定的算法将它们组合起来。  阅读全文
posted @ 2009-06-09 09:36 大胖 阅读(127) | 评论 (0)  编辑

     摘要: 产品抽象类声明产品接口,每个具体产品子类重写该接口。  阅读全文
posted @ 2009-06-07 15:08 大胖 阅读(155) | 评论 (0)  编辑

     摘要: 产品抽象类声明产品接口,每个具体产品子类重写该接口。  阅读全文
posted @ 2009-06-07 11:31 大胖 阅读(230) | 评论 (0)  编辑

     摘要: 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
  阅读全文
posted @ 2009-05-27 11:50 大胖 阅读(106) | 评论 (0)  编辑

     摘要: 一个类只能创建一个实例,提供一个全局访问点,用户不能随便创建对象。  阅读全文
posted @ 2009-05-27 11:24 大胖 阅读(124) | 评论 (0)  编辑