抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展,改造,但子类总体上会保留抽象类的行为方式。
模块方法模式是通过把不变的行为搬移到超类中去,去除子类中的重复代码来体现它的优势。模板方法模式就是提供了一个很好的代码复用平台。当可变和不可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现。通过模板方法把这些行为搬移到单一的方法,这样就帮助了子类摆脱重复的不变行为的纠缠
解决的问题:
1.当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。
2.软件开发中实现一个算法时,整体步骤很固定,通用,这些步骤已经在父类中写好了。但是某些部分容易发生变化,易变部分可以抽象出来,供不同的子类实现。这就是一种模板模式。
例:
本文来自尚硅谷康师傅的视频学习