(这个问题更多是针对可以访问这本书的人,否则很难将其置于上下文中)
我一直在阅读 GoF 的“设计模式”一书,在“创建模式->原型->示例代码” (第 124 页)下有一句话让我有点困惑 。
在页面底部附近,有 的实现BombedWall
,据我了解,它是一个具体的原型,因为它继承自Wall
,并重新定义了Clone()
虚函数。BombedWall
还定义了另一种方法,任何使用常规接口HasBomb()
的客户端都不知道。Wall
BombedWall
存储在(Prototype 客户端)中的唯一方法MazePrototypeFactory
是作为Wall*
(从 中返回BombedWall::Clone
),HasBomb()
据我了解,之后唯一的方法是将其向下转换Wall*
为BombedWall*
(动态或静态,取决于关于我是否知道类型),然后我可以访问该HasBomb()
方法。
这一切对我来说都很好;但后来作者说(同一页,最后一句,第二段最后一段):
“客户永远不必将返回值向下转换为
Clone
所需的类型”
什么?那我该怎么去HasBomb()
?
我肯定错过了什么...