设计模式9——模板方法模式

长长的一生,总要勤勤恳恳,刻苦专研。把一件事情做到极致,不然,岂非白活了?

一、举个栗子

在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱、床等装饰物。

二、模式的结构

在这里插入图片描述

  • 定义一个抽象类:Day
    • 包含抽象出来的常用的方法(有实现)
    • 包含抽象方法,想要让子类去实现的(没有实现)
    • 【重要】为了恶意操作,就把模板方法前面加上 final关键字

三、实例程序

我这里就模拟一个人从起床到睡觉的一天。例子参考:模板方法模式:例子来源

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、优点

  • 封装部分不变,扩展部分可变
  • 提取公共代码,便于维护
  • 行为由父类控制,子类实现

五、缺点

每一个不同的实现都需要一个子类来实现,导致类的数量增加。

参考并感谢

[1] http://www.runoob.com/design-pattern/template-pattern.html
[2] https://www.cnblogs.com/chenpi/p/5217430.html