行为型模式——模板方法模式(Template Method Pattern)

开头

     今天带领大家学习一下行为型模式中的第二个简单的模式——模板方法模式,在介绍模板方法模式之前,我们先将行为型模式分几大类。这样我们可以通过对比,一个个模块的学习,这样我们会更加有收获哦。



   进入正题,模板方法模式,当你看到模板两个词以后,你最先想到的是什么?PPT模板?简历模板?一些平时写作业用的表格模板啊,我相信你是在大学用的模板最多的了,说了这多模板,他们的共同点是什么呢?让我们看一章图片:


这就是我们所谓的模板,在一个抽象类中,定义一个操作的算法骨架(就是我们平时用模板),将一些步骤延迟到子类当中(就是根据模板用户填写的内容)


内容

      例子:我们今天拿上厕所为例子介绍一下模板方法模式,我们知道不同的国家上厕所的方式不一样,例如中国和印度,这个例子可能引起您的不适合或者瞎想,我们知道上厕所有一定的步骤,且步骤是无法更改的,脱裤子——蹲下——清洗(不同的国家清洗的方式不一样)——穿上裤子。

模板方法大致分为两类角色:分别为抽象类(AbstractClass)、ConcreteClass(具体子类)

抽象类(AbstractClass):定义一些列的基本操作,每一种操作对应一个算法步骤,抽象的步骤,其具体实现在子类中实现


具体子类(ConcreteClass):完成特定的算法步骤


客户端


总结

模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构,即可定义该算法那的某些特定步骤。
优点:(1)可以实现代码的复用。
          (2)子类实现特定步骤,不改变整个算法的执行步骤。

          (3)子类实现个别步骤方法,符合单一职责原则和开闭原则。

缺点:如果抽象类中具体实现步骤太多,导致系统庞大混乱。

适用环境:各个子类公共行为形成集合实现共享,提高代码的复用性。

     模板方法说白了就是在继承的基础上实现了代码的复用,  它不仅可以调用抽象类中实现的基本方法,也可调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法。

     关于模板模式的学习就先学习到这里,如果本篇博客对于初学者的您来说有一定的帮助,记得给小编点个赞哦。最后大家一句话——你必须相信凡走过必留下痕迹,学点什么都会有用的。这可能就是米老师说的方向吧!


猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/80483439