模板模式说明

模板是对多种事物的结构、形式、行为的模式化总结,而模板方法模式(Template Method)则是对一系列类行为(方法)的模式化

基类定义了一套模板(不可变),供子类继承,子类可以扩展(可变),丰富自己的业务场景

当然,对于基类模板中的步骤方法并不是必须要用抽象方法,而是完全可以用实体方法去实现一些通用的操作,灵活设计,如果子类需要个性化就对其进行重写变更,不需要就直接继承。根据场景进行适当的变通,才能对设计模式更灵活、更恰当的运用。

模板方法模式巧妙地结合了抽象类虚部方法与实部方法,分别定义了可变部分与不变部分,其中前者留给子类去实现,保证了系统的可扩展性;而后者则包含一系列对前者的逻辑调用,为子类提供了一种固有的应用指导规范,从而达到虚中带实、虚实结合的状态。

模板方法模式的各角色定义如下

● AbstractClass(抽象基类):定义出原始操作步骤的抽象方法(primitiveOperation)以供子类实现,并作为在模板方法中被调用的一个步骤。此外还实现了不可重写的模板方法,其可将所有原始操作组织起来成为一个框架或者平台。

● ConcreteClassA、ConcreteClassB(实现类A、实现类B):继承自抽象基类并且对所有的原始操作进行分步实现,可以有多种实现以呈现每个步骤的多样性。

示例代码

package com.azure.design.template;/*** 瀑布模型模版抽象类*/
public abstract class PM {public abstract String analyze (); //需求分析public abstract String design (String projec); //软件设计public abstract String develop (String projec); //代码开发public abstract boolean test (String project); // 测试public abstract void release (String project); // 发布protected final void kickoff () {String requirement = analyze ();String designCode = design (requirement);do{designCode = develop(designCode);} while(!test(designCode));        //如果测试失败则需修改release (designCode);}
}
package com.azure.design.template;public class HRProject extends PM{@Overridepublic String analyze() {System.out.println("需求分析");return "人力项目完成需求分析";}@Overridepublic String design(String projec) {System.out.println("程序设计");return projec;}@Overridepublic String develop(String projec) {System.out.println("程序开发");return projec;}@Overridepublic boolean test(String project) {System.out.println("程序测试");return true;}@Overridepublic void release(String project) {System.out.println("程序发布");System.out.println("项目验证");System.out.println("================项目上线成功==================");}
}

资料引用

刘韬《秒懂设计模式》

模板模式(Template)相关推荐

  1. c++模板模式template

    模板模式template 概念 应用场景 角色和职责 案例 概念 Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承 ...

  2. 模板模式(template)解析例子

    摘要:本文深入浅出的讲述了设计模式中的模板模式,并给出了简单的示例,例子浅显易懂,并附带源代码. 模板模式属于行为型模式,其意图是定义一个操作的算法骨架,而将一些步骤延迟到子类中,可以不改变一个算法的 ...

  3. 模板模式template

    模板模式:把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为 Template Method 模式一般应用在具有以下条件的应用中: 具有统一的操作步 ...

  4. 不重复发明轮子 -- 模板模式 (Template Pattern) 介绍 使用场景案例分析 优缺点 及代码演示

    一句话概括: 一个抽象类公开定义了执行它的方法的方式/模板,它的子类可以重写方法实现,但调用将以抽象类中定义的方式进行. 补充介绍: 模板模式(Template Pattern)使得子类可以不改变一个 ...

  5. [设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍(两种父子类行为模式)

    这次要说的两个模式,都是行为模式,指的是在程序运行过程中,经过经验总结的行为开发模式. 其次,行为模式再按照类与类间关系的划分,可以划分为四个类型:父子关系(2种).独立类间关系(4种).类自身状态( ...

  6. 模板模式-Template Pattern

    一.定义 二.结构 三.实现 四. mybatis模板模式浅探之BaseExecutor 一.定义 一个抽象类公开定义了执行它的方法的方式/模板.它的子类可以按需要重写方法实现,但调用将以抽象类中定义 ...

  7. Java模板模式(template)

      java23中设计模式中的模板模式是我们经常在框架源码中能看到的设计模式,所以本文就给大家来介绍下模板模式 模板模式 模板模式介绍   模板方法模式是编程中经常用得到的模式,它定义了一个操作中的算 ...

  8. C++设计模式之模板模式(template)(行为型)

    一 定义 模板方法模式是一种类的行为型模式,在它的结构图中只有类之间的继承关系,没有对象关联关系,模板方法模式(Template Method Pattern)官方定义:定义一个操作中的算法的框架,而 ...

  9. 模板模式 (Template Method Pattern)

    一.什么是模板 既然是模板设计思维,那首先要探索一下到底何为模板,搞清楚现实中模板是啥样的,才能进一步把模板抽象化. 一提到模板,我最先想到的是PowerPoint,没错,就是让人头疼的PPT,马上要 ...

最新文章

  1. Oracle中实现continue的方法
  2. 在html设置文字位置,html设置怎么文字的位置
  3. 如何在SQL Server中实现错误处理
  4. Maven 国内镜像很慢解决的方法
  5. Android推送分析
  6. 利用TreeView实现C#工具箱效果
  7. 暴走恭亲王:Jed McCaleb才是中本聪大魔王?
  8. mysql卸载不干净
  9. 托福考试前你需要知道哪些事情
  10. 人生就是个学习、思考与实践的过程
  11. 攻击 xxs_“吃鸡”玩家被xxs故意炸倒,举报时出现提示,光子站在xxs一边!
  12. 分类任务中的类别不平衡问题
  13. 谢希仁计算机网络第七版答案
  14. 别再说自己不会了!2021年教你增加拿到BAT等大厂offer几率,醍醐灌顶!
  15. 【复现笔记】Iterative Corresponding Geometry
  16. MYSQL修改数据库密码
  17. Python毕业设计开题报告职业推荐系统
  18. excel 置信区间 计算_如何用excel计算 95%的置信区间
  19. redis的常用类型
  20. 滴滴数据科学家分享:数据如何驱动业务增长

热门文章

  1. Spring Bean的生命周期例子
  2. JSON与Java对象的互相转换
  3. Android进阶——Crash异常捕获并发送到服务器
  4. adb命令安装apk 来学习吧
  5. 必须在构造函数基/成员初始值设定项列表中初始化
  6. HDOJ 4005-The war解题报告
  7. 一般用css设置中文字体的Unicode编码
  8. 用MATLAB将矩阵数据写入txt文件中,打开乱码原因
  9. 搞不定的C语言--extern的作用
  10. 7-49 判断素数 (10 分)