
设计模式
文章平均质量分 79
glyc
这个作者很懒,什么都没留下…
展开
-
实现设计模式:观察者模式
观察者模式是一种常用的设计模式。当被观察对象的状态发生改变时,所有依赖于它的观察者都得到通知并被自动更新。这里利用boost:;signal实现了一个通用的观察者模式,能满足一般需要。如果需要异步通知或更新,就不行了。#include namespace observe{ template class subject { public: typedef boost原创 2013-08-12 14:38:12 · 710 阅读 · 0 评论 -
实现设计模式:命令模式
命令模式将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。客户端不需要知道是谁如何实现相应的功能。这里实现了一种简单的命令模式,不支持恢复功能。#include #include namespace dp{ template class command { public: command(T& re原创 2013-08-13 11:07:16 · 656 阅读 · 0 评论 -
实现设计模式:原型模式
原型模式是一种很简单的模式,它能在不知道对象确切类型,只有基类信息的情况下,正确复制对象。以下实现了一个原型工厂,可以利用保存在工厂里的原型,克隆出新的对象。#include #include namespace dp{ template class prototype_factory { public: template void insert(const Key原创 2013-08-13 09:50:57 · 572 阅读 · 0 评论 -
实现设计模式:访问者模式
访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。和标准的访问者模式相比,这个实现借鉴了loki,将数据和算法是完全解耦,既很容易增加新的算法,也很容易增加新的数据类型。原创 2013-08-15 10:41:21 · 621 阅读 · 0 评论 -
实现设计模式:工厂模式
工厂模式将创建对象的代码从客户代码中分离,提供了一种在大系统中管理创建众多对象的有效方法。当从配置文件或流中创建对象时,经常采用这种模式。这里提供一种通用实现,可以作为参考。#include #include namespace factory{ template > class simple_factory { public: T* operator()(Key&)原创 2013-08-12 16:38:02 · 761 阅读 · 0 评论 -
实现设计模式:享元模式
享元模式其实类似于对象池。如果系统中有大量的细粒度对象,创建这些对象是不小的开销。如果能共享和反复使用这些对象,那么就可以减少对象数量,提高系统性能。下面实现了一个享元工厂,可以作为参考。#include #include namespace dp{ template class flyweight_factory { public: template flywei原创 2013-08-13 14:30:48 · 594 阅读 · 0 评论