模板模式
在一个抽象类中公开定义执行它的方法的模板。它的子类可以按需重写方法,但调用将以抽象类中定义的方式进行。
优点
- 封装不变部分,扩展可变部分。
- 提取公共代码,便于维护。
- 行为由父类控制,子类实现。
缺点
- 每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。
适用场景
- 有多个子类有相同的方法,且逻辑相同。
- 重要的、复杂的方法,可以考虑作为模板方法。例如:spring中对hibernate封装的开启事务、获取session、关闭session等函数。
类图

1 | Game dota = new Dota(); |