设计模式 —— 模版方法模式(Template Method)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011815404/article/details/89677702

【概述】

模板方法模式是所有模式中最为常见的几个模式之一,其是基于继承的代码复用的基本技术,模板方法模式的结构和用法也是面向对象设计的核心。 

模版方法定义了一个操作中的算法的骨架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

模版方法模式需要开发抽象类和具体子类的设计师之间的协作,一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。

当要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同的时候,通常用模板方法模式解决。

【UML】

模版方法模式涉及到了两个角色:

  • 抽象模版角色:Abstract Class,定义了一个或多个抽象操作,以便让子类实现,一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。  
  • 具体产品角色:Concrete Class,实现了父类所定义的一个或多个抽象方法,每一个抽象模版角色都可以有任意多个具体模版角色与之对应,而每一个具体模版角色都可以给出这些抽象方法的不同实现。 

简单来说,具体产品角色的方法是具体逻辑步骤(具体方法),而抽象模版角色的方法将具体方法汇总起来(抽象方法)

【优缺点】

优点:实现代码复用

缺点:算法骨架不容易升级(模板和子类是非常耦合的,如要对模板中的算法骨架进行变更,会影响子类变化)

猜你喜欢

转载自blog.csdn.net/u011815404/article/details/89677702