kangtian0的专栏

目标太远,即使伸出手仍然是遥不可及;目标太近,即使能达到仍然是彷徨失落!...

《设计模式》勘误和疑问

《设计模式》勘误和疑问

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

勘误部分:

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

原因:

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

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

P121Stream* &StreamA =

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

改为:

Stream* &StreamA =

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

       原因:

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

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

      改为:

         Application不是Widget的直接子类。

       原因:

       从下面的改马可以看出ApplicationHelpHanlder的直接子类。

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

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

 

 

 

疑问部分:

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

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

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

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

bykangtian0


阅读更多
个人分类: 技术方面书评
上一篇"is-a"关系不能决定继承
下一篇《设计模式》第二章中附加分隔符和连字符信息存放问题
想对作者说点什么? 我来说一句

java编程思想4全部勘误.pdf

2017年10月02日 6.73MB 下载

2018版王道图书勘误信息2017.4.21

2018年03月13日 438KB 下载

大话数据结构PDF(勘误完成版)

2014年11月09日 49.16MB 下载

2019王道考研数据结构勘误

2018年05月04日 435KB 下载

没有更多推荐了,返回首页

关闭
关闭