大话设计模式 —— 第十章《模板方法模式》C++ 代码实现

模板方法模式是一种基于继承的行为型模式,用于定义算法的骨架并允许子类替换特定步骤。它将不变的部分抽取到抽象类中,可变部分留给子类实现,提高了代码复用性和拓展性。模式中的模板方法通常是不可覆盖的final方法,包含基本方法的执行顺序。模板方法模式适用于代码中存在公共流程,而具体步骤可变的情况。
摘要由CSDN通过智能技术生成

 

目录

定义

优点

缺点

使用场景


 

模板方法模式是一种基于继承的代码复用的行为型模式;在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。本篇博客我们一起来学习模版方法模式。

 

代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method),这个设计模式的名字就是从此而来。


定义


  • 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简单地说,该模式就是将子类中共有的方法放到父类中。
  • 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承代码复用的基本技术。没有关联关系。 因此,在模板方法模式的类结构图中,只有继承关系
è¿éåå¾çæè¿°
模板方法模式UML 图
  • 抽象模板(Abstract ):是一个抽象类。抽象类定义了若干个方法以表示算法的各个步骤,这些方法中有抽象方法也有非抽象方法,这些方法统称为基本方法(Primitive Operation)。重要的一点是,抽象模板中还定义了一个称之为模板方法的方法( 一般是一个具体方法 ),该方法不仅可以调用抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法,即模板方法定义了算法的骨架。
  • 具体模板(Concrete ):具体类是抽象类的子类,用于实现其父类中的抽象方法来完成子类特定算法的步骤,也可以覆盖父类中已经实现的具体基本操作。

对于模板方法模式,父类提供的构建步骤和顺序或者算法骨架,通常是不希望甚至是不允许子类去覆盖的所以在某些场景中,可以直接将父类中提供骨架的方法声明为final类型。


优点


  • 提高代码复用性 
    将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中,去除了子类中的重复代码。
  • 提高了拓展性 ,封装了不变部分,扩展了可变部分 。一般来说&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值