Touch NullObject Pattern
摘要:设计模式一个要点就是可以封装变化点,使得这个变化点上的的扩张变可以变得很轻松。Null Object Pattern却不是。它没有封装任何变化点,甚至它的结构图仅仅就是一个简单的类继承结构: 所以以其说它是一个设计模式倒不如说是一个编程技巧。 下面我们来看几个实例: 1.我们来看一个简单的屏幕保护程序,它的功能就是在屏幕上显示一个可以移动且颜色...
阅读全文
posted @
2006-12-09 17:12
SweetDream
阅读(959)
推荐(0)
一种不好的设计大家来论论
摘要:class Base{ Type GetType() { return Type.Base; } } Class DeriveClassA : Base{ Type GetType() { return Type.DeriveClassA; } public void AFounction() { // do sthing... }...
阅读全文
posted @
2006-11-30 10:38
SweetDream
阅读(1089)
推荐(0)
Singleton(2)
摘要:今日在网上看到另一个Singleton的实现方式:和Ogre的那种比起来有如下好处:1.使用了auto_ptr自动释放Singleton类。2.解决多线程冲突。------------------------------目录------------------------------本文的主要内容为:1、Singleton模式的基类2、基本的Singleton容器3、Singleton模板4、引入...
阅读全文
posted @
2006-11-29 14:08
SweetDream
阅读(537)
推荐(0)
Singleton
摘要:Singleton模式与在Ogre中的实现 Singleton模式的用意是对于一个Class全局只能创建一个实例。常规的做法是把构造函数藏起来,然后通过静态方法返回唯一的一个静态实例。 class Singleton { private: static Singleton *ms_Instance; public: Static Singleton* GetInstan...
阅读全文
posted @
2006-11-25 19:55
SweetDream
阅读(683)
推荐(1)
FACTORY模式
摘要:FACTORY模式允许我们只依赖抽象接口就能创建出具体对象的实例。所以,开发期间如果具体类是高度易变的,那么该模式就很适合。 1. 简单工厂 简单工厂的一个特点就是工厂类必须知道所有具体厂品的实现,根据传进来的参数通过if/else判断创建哪个具体厂品。这样其他地方不需要创建具体厂品。做到了职责的分离。如果要创建对象只需要通过这个工厂类,这个工厂类通常由main或者由一个隶属于m...
阅读全文
posted @
2006-01-09 16:06
SweetDream
阅读(1409)
推荐(0)
SINGLETON模式和MONOSTATE模式
摘要:对于有些类,它们只需要一个实例,比如有个资源管理类,它负责管理一个系统中的资源,这样的类的实例整个系统仅仅需要一个。如果创建了多份就会引起严重的逻辑错误。为了避免这种错误,Agile中提到了2种解决方法,一个是Singleton模式,一个是Monstate模式,下面就是对这两种模式的分析。 Singleton模式 Singleton模式的结构与基本实现并不困难,它的结构图如下: 从...
阅读全文
posted @
2006-01-05 20:52
SweetDream
阅读(1430)
推荐(0)
FACADE模式和MEDIATOR模式
摘要:门面(Facade)模式和中介者(Mediator)模式有着共同的目的。它们都是调配一组相互耦合的对象的通信。不过门面模式关注的是这组复杂对象如何与外界通信,而中介者模式是调配这组复杂对象之间的通信。 门面(Facade)模式 当想要为一组具有复杂且全面的接口对象提供一个简单且特定的接口供外界使用时,就可以采用门面模式。 门面模式理解起来不难,但是要找到...
阅读全文
posted @
2005-12-19 11:38
SweetDream
阅读(2740)
推荐(0)
TEMPLATE METHOD模式和STRATEGY模式
摘要:这两个模式的相同之处在于它们可以使算法和上下文解耦,不同之处在于一个是使用继承来解决问题,另一个是基于委托。 一、 模板方法(Template Method)模式 准备一个抽象类,让它定义了一个操作中算法的骨架,并可以实现部分逻辑,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。 结构图如下: 二. ...
阅读全文
posted @
2005-11-30 20:49
SweetDream
阅读(924)
推荐(0)
COMMAND模式
摘要:通过命令模式可以把一个请求封装到一个对象中(ConcreteCommand)。把请求看成是一个一个的对象给了我们很多灵活性。比如: 1. 实现C语言中的回调效果。回调的基本思想就是由系统给我们提供一些接口,也就是常使用的API,这种函数可以将某个其他函数的地址作为其参数之一,可以通过该地址对这个函数进行调用,而被调用的函数就是我们通常所说的回调函数了。在Command模...
阅读全文
posted @
2005-11-28 21:08
SweetDream
阅读(778)
推荐(0)