模板方法模式 小鱼儿 2022-05-31 09:14 146阅读 0赞 1.使用场景: 当实现一个算法的时候,这个算法的整体步骤是固定的,但是某一些算法可能会进行更改。易变的部分我们可以抽取出来,供子类实现。比较常见的应用有Junit单元测试Spring中的JDBCTemplate类等。 2.UML表示 模板方法模式包含如下两个角色: 2.1 AbstractClass(抽象类):在抽象类中定义了一系列基本操作(PrimitiveOperations),这些基本操作可以是具体的,也可以是抽象的,每一个基本操作对应算法的一个步骤,在其子类中可以重定义或实现这些步骤。同时,在抽象类中实现了一个模板方法(Template Method),用于定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法。 2.2 ConcreteClass(具体子类):它是抽象类的子类,用于实现在父类中声明的抽象基本操作以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作。 具体的UML示意图如下: ![20180217163501816][] 3.代码实现 定义一个银行办理业务步骤的类: public abstract class BankTemplateMethod { public void takeNumber(){ System.out.println("取号排队"); } public abstract void transact(); public void evaluate(){ System.out.println("反馈评分"); } public final void process(){ this.takeNumber(); this.transact(); this.evaluate(); } } 再定义一个具有特殊需求的类: public class Withdrawals extends BankTemplateMethod { @Override public void transact() { System.out.println("取款!!!"); } } 最后是一个简单的测试类: public class Client { public static void main(String[] args) { BankTemplateMethod bankTemplateMethod=new BankTemplateMethod() { @Override public void transact() { System.out.println("存点零花钱"); } }; bankTemplateMethod.process(); } } 4.总结 模板方法定义了操作中算法的骨架,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定的步骤,也即是通过模板方法,处理的步骤已经在父类中定义好了,而具体的实现则延迟到子类中定义。 项目链接: https://github.com/MemoryExplosion/design\_pattern\_review/tree/master/src/java/templateMethod [20180217163501816]: /images/20220531/4982dbb3c4b64a42b816f7d29c889c98.png
相关 模板方法模式 定义 > 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变算法的结构即可重复定义算法的某些特点步骤 角色 > AbstractClass抽象 àì夳堔傛蜴生んèń/ 2022年06月03日 03:53/ 0 赞/ 139 阅读
相关 模板方法模式 1.使用场景: 当实现一个算法的时候,这个算法的整体步骤是固定的,但是某一些算法可能会进行更改。易变的部分我们可以抽取出来,供子类实现。比较常见的应用有Junit单元测试S 小鱼儿/ 2022年05月31日 09:14/ 0 赞/ 147 阅读
相关 模板方法模式 模板方法模式 一、概述 1. 模板方法模式是编程中经常用到的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构 约定不等于承诺〃/ 2022年04月17日 00:16/ 0 赞/ 206 阅读
相关 模板方法模式 我们思考这么一种场景,课堂上老师在黑板即兴出几道题,学生在下面在手抄黑板上的题目,这个时候前面的同学可能能抄对题目,但后面的同学可能因为太远看不清老师写的字,或者说老师写错了一 我就是我/ 2022年01月30日 05:49/ 0 赞/ 221 阅读
相关 模板方法模式 最近看书又遇到模板方法模式,具体是在同步器(AQS)的内容上。就顺便再来回顾下。 同步器AbstractQueuedSynchronizer(AQS)是一个抽象类。其中定义了 墨蓝/ 2021年10月18日 11:34/ 0 赞/ 305 阅读
相关 模板方法模式 生活中有很多按步骤才能完成的事,比如我们想进房间,需要先将门打来,然后才能进去,进去之后再把门关上。开门和关门是固定的步骤,而进入房间的步骤则不是固定的,它可以有多种方式,走着 约定不等于承诺〃/ 2021年10月15日 06:45/ 0 赞/ 336 阅读
相关 模板方法模式 什么叫做模板方法模式? 在定义功能时,功能的一部分是确定的但是有一部分是不确定的,而确定的部分在使用不确定的部分。那么这时就将不确定的部分暴露出来,由该类的子类去实现。 清疚/ 2021年09月18日 15:40/ 0 赞/ 369 阅读
相关 模板方法模式 14.模板方法模式 ![70][] class Client { static void Main(string[] a 阳光穿透心脏的1/2处/ 2021年09月17日 00:02/ 0 赞/ 276 阅读
相关 模板方法模式 > Java的集合就是一个典型的,利用了模板方法模式的例子。Java集合中的Collection集合包括List和Set两大组成部分。List是队列,而Set是没有重复元素的集 朴灿烈づ我的快乐病毒、/ 2021年09月10日 06:18/ 0 赞/ 329 阅读
相关 模板方法模式 一 点睛 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些 深藏阁楼爱情的钟/ 2021年07月24日 20:53/ 0 赞/ 415 阅读
还没有评论,来说两句吧...