Aha!设计模式(34)-原型(8)

2019-04-13 13:54发布

代码示例   用的还是MazeGame的例子。 首先定义一个MazeFactory的子类MazePrototypFacoty,这个继承关系本身是抽象工厂模式。     这个子类使用原型模式构建产品,其构造函数如下:   在构建产品时,使用原型的Clone方法。     代码中使用Initialize/setNumber方法来修改克隆之后对象的属性。这种情况在实际的开发中经常发生。   在使用MazePrototypeFactory构建游戏的时候,只需要替换原型就可以生成不同的游戏。   除了原型的类型之外,其他一切都相同。作为原型模式的一部分,每个原型都要支持Clone方法。以下是Door的情况:     当我们需要扩展产品类型的时候,必须同时定义Clone方法。以下是BombedWall的例子:   需要注意的是,新的Clone方法虽然返回的是基类类型的变量,实际生成的对象确实子类类型的。   示例代码   示例代码都已在QT上编译通过,可以从以下地址下载:   https://github.com/xueweiguo/OOThinking/tree/master/Aha!DesignPattern/Prototype   作者一句话   学习包含两个活动:学是模仿,习是练习。缺一不可。 练习有两个窍门:一个是尽早,一个是要尽量贴近实战。   觉得本文有帮助?请分享给更多人。 阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】