《设计模式》勘误和疑问

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

《设计模式》勘误和疑问

《设计模式——可复用面向对象软件基础》中文翻译版 GoF著 吕建审校 机械工业出版社

勘误部分:

P65:Builder模式结构图 Builder抽象类中应该有抽象增加一个抽象函数:GetResult()

原因:

1、 与后面的代码示例对应

2、 保证每个继承的类都有这个函数,以得到创建的对象

P121:Stream* &StreamA =

new CompressingStream( new ASCII7Stream( new FileStream("aFileName"));

改为:

Stream* &StreamA =

new ASCII7Stream ( new CompressingStream ( new FileStream("aFileName"));

原因:

根据上面的说明“现在我们创建FileStream类,它首先将数据压缩,然后将压缩了的二进制数据转换成为7位ASCII码”可知是要先压缩,后才转换。

P153:文字的倒数第三行“Application不是HelpHandler的直接子类。”

改为:

Application不是Widget的直接子类。

原因:

从下面的改马可以看出Application是HelpHanlder的直接子类。

当然:这里用Widget是我的猜测,也可能不对,不过原来的肯定是不对的。

其他一些打字错误就不提了!

疑问部分:

P160:定义的模板类SimpleCommand除了有一个类参数Receiber之外,还定义了一个Action的成员函数,起初我觉得不需要。后来想想,如果我们肯定从一个类继承,那么保证这个类中有一个Action()是可以这样做的,不过这就固定了这个函数名,使用模板定义成员函数,可以使程序运行时更灵活,因为我们可以使用不同的函数名。

P183:Mediator模式中,我曾经认为Mediator模式很灵活,其实只是一种概念,用来提供交互功能,而增加其他类使用的灵活性。这些交互的Colleage具体类可以有不同接口。但是,考虑到为了容易的和Observer模式结合,这样的定义就更灵活。

P223~224:“可以不将操作静态地绑定在Element接口中,而将其安放在一个Visitor中,并使用Accept在运行时进行绑定。扩展Element接口就等于定义一个新的Visitor子类而不是多个新的Element子类。”

问题:这两句话说的是什么意思?我一直不能理解!

by:kangtian0

e-mail:dunanshan@163.com

QQ:22724092

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航