10. 代码示例
还是迷宫游戏的例子。不同的是这次是MazeGame自己构建迷宫。
由于是工厂方法模式,所以CreateMaze没有硬编码构建Wall,Room,Door等对象,而是分别调用虚函数MakeRoom,MakeRoor,MakeWall对象。
这个准备工作完成以后,我们就可以另外定义不同的游戏:
这两个派生类根据各自需要分别从新定义了MakeWall/MakeRoom和MakeRoom/MakeDoor方法,其代码如下:
代码本身非常简单,本文省略说明。
示例代码
上述例子代码可以利用以下链接下载:
https://github.com/xueweiguo/OOThinking/tree/master/Aha!DesignPattern/FactoryMethod
作者观点
为了增加构建对象的灵活性,工厂方法将构建对象的部分独立出来并定义虚函数。如果将这种方式外推,就是如下表述:
为了方便扩展某些处理,可以将该处理独立出来并定义虚函数。
这是包含大部分设计模式的面向对象的最常用套路。
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】