ModelMaker_design中文.pdf
文本预览下载声明
/
savenight
savenight@163.com
原文是MM_designpatterns.pdf来自 http:\\www.modelmaker.demon.nl
本文版本:SN2002-9-28
本文献给Delphibbs上的大富翁们!
2002-9-28
模式(pattern)的重要性我就不再罗嗦了。本文基本上算是ModelMaker5的帮
助文件MM_designpatterns.pdf的中文翻译。说“基本上”是因为在某些地方我
增加或稍改了一些语句,以便从来都没有用过ModelMaker的人也可以通过本文
很轻松地做出所给的例子来,而不是还要去参考MM_usermanual620.pdf。
我的中文一向很烂,如果您觉得本文的文笔污染了您的视觉,尽管来信骂之
(我就是这样对待一些把好好的一本English读物翻译地很烂的家伙)。
欢迎来信交流,请您多多指正!
我用的环境是Delphi7ModelMaker6.2。ModelMaker6.2中支持的模式
与ModelMaker5一样多,共有
Mediator, Decorator, Reference Count, Lock八种。(以后我们把
ModelMaker6.2简称为MM )。基于下列原因,MM并没有把其它模式书中所提
到的所有模式都作进来。
一、因为有很多模式可以从另一种模式演变,例如Proxy模式和Decorator模式
的结构就一模一样。
二、用MM的功能去override一些methods,并且让这些overridden的
methods受制于(restricted)他们原来的methods,这样就可以很容易地实
现一些模式。
三、一些模式用MM很难实现。
四、还有一些模式与类库的关系非常紧密,所以用一种通用的工具来实现它显然
不和情理。
MM中所用到的模式都是参考文献 [Gam+] Addison Wesley, Erich gamma,
Richard Helm, Ralph Johnson, John Vlissides,Design Patterns, Elements of Reusable
Object-Oriented Software. 1995. ISBN 0-201 -63361-2. 来的,以后简称[Gam+] 。
本文中涉及模式的地方如果不懂,请参考上面提到的《Design
Patterns,Elements of Reusable Object-Oriented Software》。
目前我也在研读此书,欢迎来信交流:)
下面就进入正题吧:)
Wrapper pattern
来源:
MM 中的Wrapper 模式是建立在[Gam+]中描述的Adapter 或Wrapper 模式上的。
意图:
一个Wrapper 把一个类的接口转化成用户期望的另一种接口。Wrappers 能够让原本因为
不相容而无法在一起工作的类现在可以一起工作。
动机:
在Delphi 的Object Pascal 语言中,多态性是建立在class 类型上而不是Delphi 支持的接
口上的。这就暗示了,虽然两个类可以支持同一个接口,但他们必须要拥有相同的祖先来满
足客户对象多态性转化的需求。有时候您需要一些现存的毫不相关的类一起工作。Wrapper
模式让您用一个类包装(wrap)另一个类的部分接口。这样就在Delphi 里通过“uses”关系模
拟了多继承。
比如现在有一个从TObject 派生的TSample 类,而您想把TSample 类加到Delphi 的组
件面板上。因为Delphi 规定只有从TComponent 继承的类(称为组件)才可以被加到组件面板
上,所以这里我们无法直接将TSample 类加到Delphi 的组件面板上。当然您可以说把TSample
的祖先换成TComponent,但是如果您没有源码呢?您可以创建一个从TCom
显示全部