10. 代码示例

 

还是迷宫游戏的例子。不同的是这次是MazeGame自己构建迷宫。

 

Aha!设计模式(26)-工厂方法(7)

Aha!设计模式(26)-工厂方法(7)

由于是工厂方法模式,所以CreateMaze没有硬编码构建Wall,Room,Door等对象,而是分别调用虚函数MakeRoom,MakeRoor,MakeWall对象。

 

这个准备工作完成以后,我们就可以另外定义不同的游戏:

 

Aha!设计模式(26)-工厂方法(7)

 

这两个派生类根据各自需要分别从新定义了MakeWall/MakeRoom和MakeRoom/MakeDoor方法,其代码如下:

 

Aha!设计模式(26)-工厂方法(7)

Aha!设计模式(26)-工厂方法(7)

 

代码本身非常简单,本文省略说明。

 

示例代码

 

上述例子代码可以利用以下链接下载:

 

https://github.com/xueweiguo/OOThinking/tree/master/Aha!DesignPattern/FactoryMethod

 

作者观点

 

为了增加构建对象的灵活性,工厂方法将构建对象的部分独立出来并定义虚函数。如果将这种方式外推,就是如下表述:

为了方便扩展某些处理,可以将该处理独立出来并定义虚函数。这是包含大部分设计模式的面向对象的最常用套路。

 

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

Aha!设计模式(26)-工厂方法(7)

相关文章:

  • 2021-09-06
  • 2021-07-03
  • 2022-01-20
  • 2021-04-05
  • 2021-07-28
  • 2022-01-04
猜你喜欢
  • 2021-10-13
  • 2021-04-13
  • 2021-07-31
  • 2021-12-02
  • 2021-08-29
  • 2021-08-31
  • 2021-11-04
相关资源
相似解决方案