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

Posted winsons

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式——模板方法模式相关的知识,希望对你有一定的参考价值。

一、概念:模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。(总的来说就是把类中总是会重复的那部分移到抽象类的模板方法中,把在不同情形下有不同实现的那部分代码作为接口暴露出去,子类继承这个抽象类,并实现这个接口,而模板方法则调用这个接口)

二、UML示意图:

技术图片

 

 

 在这里是抽象类(AbstractClass)中把重复代码或者说是代码框架实现在TemplateMethod()方法中,把每个子类都有可能不同的操作实现在PrimitiveOperation1()和PrimitiveOperation2()中,并且TemplateMethod()方法通过调用这两个方法来填充自己的内容,而子类则对PrimitiveOperation1和PrimitiveOperation2实现不同的内容,使得自己有别于其他同样继承自这个抽象类的具体类。

三、优缺点

优点:

  • 把不同的实现都放到了子类中,提高了扩展性。当要扩展系统时只需要新增子类增加不同的实现即可,无需更改抽象模板类,遵守了开闭原则。
  • 把重复的代码都放到模板方法中,提高了代码的复用性。

缺点:

  • 因为每个不同的实现都要新增子类,会造成系统中有许多类。

以上是关于设计模式——模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式(十五)——模板方法模式

设计模式----模板方法模式

设计模式-模板方法模式(15)

设计模式--15模板方法模式

手撸golang 行为型设计模式 模板方法模式

大话设计模式—模板方法模式