《设计模式》勘误和疑问

原创 2005年05月31日 21:53:00

《设计模式》勘误和疑问

《设计模式——可复用面向对象软件基础》中文翻译版 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


.NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践)

1.1.疑问 1.1.1.UML何用 1.1.2.领域建模 1.2.模式 1.3.原则 1.4.工具 1.5.过程 1.6.框架 1.7.项目演示 最近在研究DDD颇有收...

iOS设计模式——Category

什么是Category Category模式用于向已经存在的类添加方法从而达到扩展已有类的目的,在很多情形下Category也是比创建子类更优的选择。新添加的方法同样也会被被扩展的类的所有子类自动继...

【大话设计模式——学习笔记(4)】开放——封闭原则

开放――封闭原则   软件实体可以扩展,但是不可修改。即对于扩展是开放的,对于修改是封闭的。面对需求,对程序的改动是通过增加代码来完成的,而不是改动现有的代码。   当变化发生时,我们就创建抽象来...

一句话评论设计模式六大原则

原则,故名思议则是本质的意思。所谓擒贼先擒王,研究设计模式自然要先了解设计原则,所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都...
  • xubo578
  • xubo578
  • 2012年02月02日 18:46
  • 414

设计模式——简单工厂,工厂方法,抽象工厂

前言设计模式在工作中经常会用到: 创建型模式(5):工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元...

Java设计模式之—静态代理和动态代理

代理从字面意思来看就是,替代XX去做某事,在我们的程序中,一般替代实际对象去进行操作,扮演着中间人的角色: 客户端 –> 业务类 客户端 –> 代理 –>业务类(代理) 代理接口int...
  • jeffleo
  • jeffleo
  • 2016年08月17日 00:08
  • 455

Java[设计模式]之美——开篇

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 总体来说设计模式分...

Android 设计模式

项目开发中发现问题、解决问题这个过程中会出现很多问题,比如重复出现、某个问题的遗留,这些问题的本质就是设计模式。今天记录设计模式的知识点。...

设计模式-工厂方法 简单工厂 抽象工厂 模板方法

简单工厂模式: 创建多种不同类型的产品,根据传入参数的类型进行创建。 只有一个Creator方法,负责多种不同的产品的创建,传入参数的类型来决定具体创建哪种产品,实现简单,但是如果需要扩展产品的话...

java io 流 设计模式

装饰模式的应用  学过装饰模式后,大家会发现,它在Java语言中最著名的应用莫过于Java I/O标准为库的设计了。这一节将以处理Byte流为例,看看装饰模式是怎样得到应用的。  为什么不...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《设计模式》勘误和疑问
举报原因:
原因补充:

(最多只允许输入30个字)