软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Null Object 设计模式

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

CSDN - 文档中心 - 其他    
标题     Null Object 设计模式    guoyan19811021(翻译)
关键字     NullObject 设计模式
出处     http://www.cs.oberlin.edu/~jwalker/nullObjPattern/

Null Object Pattern

意图

    提供一个对象[如一个代理]给给定的类型,用以代替这个对象为空的情况。 Null Object提供聪明的、什么也不做的行为,隐藏来自它的合作者的细节。

 

别名

 

      Stub, Active Nothing

 

 

动机

     

   有时,一个类需要它的一个合作者不需要做任何事。然而,类期望对待一个[什么也不做]的合作者与它对待实际上的对象提供的行为具有相同的方法。

举例来说,考虑一个显示球以移动有关荧屏的问题而且有特别的颜色效果。 这可以由创造一个球达成分类来显示球和使用一个Strategy pattern [GHJV95,第 315 页] 控制球的提议和另外的一个策略式样控制球的颜色来实现。然而, 和你开始想要产生是可能确定的最简单的策略每件事物正在工作。

 

    

 

现在,最简单的策略不是策略。 那就是do nothing, ,不移动而且不改变颜色。 然而,Strategy pattern 需要球有实现strategy 的接口的对象。 这是Null Object 模式变成有用的地方。 只需要简单实现不移动球的NullMovementStrategy 和不改变球的颜色的NullColorStrategy 类。 这两个都可以实现本质上没有代码。 所有的方法在这些类中只做 "nothing" 。它们是Null Object 模式的完美例子。

Null Object 模式的关键是一个为这个类型的所有对象定义接口的抽象类。 Null Object 通过这个抽象类的子类来实现。因此它遵照抽象类的接口, 它可以在需要这个类的任何地方型来使用。当作比拟为使用不实际上实现抽象的接口特别的 "null"的值和一定不变地被检查为由于特别的代码在使用抽象的接口任何的对象中。

一般会认为 Null Objects 是过于简单和 "愚蠢" ,但是在事实上一个 Null Objects 在没有任何其他的对象互相影响的情况下,总是很确切的知道需要去做什么。 因此,事实上它是最"智能"的。

 

适用性

  

     在以下情况下使用Null Object模式

 

;        一个对象需要一个合作者  Null Object 将不被引入这个合作体系--它利用已经存在的合作者。

;        一些合作者的实例应该什么也不做。

 

 

 

 

 

 

 

参与者

  • Client
    • 需要一个合作者
  • AbstractObject
    • 声明Client合作者的接口
    • 适当的在所有类中实现接口默认行为
  • RealObject
    • 定义一个AbstractObject的子类,它的实例实现Client预期的有用的行为
    • 定义AbstractObject 的一个具体的子类提供客户预期的有用行为
  • NullObject
    • 提供一个与 AbstractObject 一致的接口,使得这个空对象可以替代真实的对象
    • 使接口中的方法 do nothing
    • 当不止一种方法“do nothing”时,就需要相同数量的空对象



相关文章

相关软件