代码改变世界

23.模版模式

2019-08-27 11:30  zhongj  阅读(167)  评论(0编辑  收藏  举报
  • 一、角色
    • 抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架
    • 具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节
  • 二、适用场景
    • 有多个子类共有的方法,且逻辑相同
    • 重要的、复杂的方法,可以考虑作为模板方法
  • 三、实例
    • 图1是一个游戏的实例,每个游戏的生命周期都包括初始化、开始游戏、游戏结束,但是每个游戏初始化、开始游戏、结束游戏的具体方式又不尽相同,图中Game是抽象父类,它实现了一个play的模版方法,分别调用初始化、开始游戏、结束游戏这三个抽象方法,Cricket、Football则是具体类,继承Game类并在子类中实现了这些抽象方法,并共用了不变的paly模版方法
    • 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/template
    图-1