前言:【模式总览】——————————by xingoo

  模式意图

  定义一个类的框架,当它有不同的类时,再具体实现。

  比如,我们设计一个跨系统的客户端软件,Windows需要一套展现类,Linux需要一套,mac还需要一套。这样,只需要抽取他们的共同操作编程一个框架类,具体使用到哪个系统时,再使用对应的类,有点像C++里面的模板。

  应用场景

  1 一次性实现一个类的不变部分,其他的部分留到子类实现。

  2 各个子类提取公共部分成为超类

  3 控制子类的扩展。

  模式结构

  AbstractClass 抽象类框架

abstract class AbstractClass{public void action(){step1();step2();newMethod();}abstract protected void step1();abstract protected void step2();abstract protected void newMethod();
}

  Class 具体的子类,进行扩展

class Class1 extends AbstractClass{protected void newMethod() {System.out.println("class1 newMethod");}protected void step1() {System.out.println("class1 step1");}protected void step2() {System.out.println("class1 step2");}
}
class Class2 extends AbstractClass{protected void newMethod() {System.out.println("class2 newMethod");}protected void step1() {System.out.println("class2 step1");}protected void step2() {System.out.println("class2 step2");}
}

  全部代码

 1 package com.xingoo.test.design.template;
 2 abstract class AbstractClass{
 3     public void action(){
 4         step1();
 5         step2();
 6         newMethod();
 7     }
 8     abstract protected void step1();
 9     abstract protected void step2();
10     abstract protected void newMethod();
11 }
12 class Class1 extends AbstractClass{
13     protected void newMethod() {
14         System.out.println("class1 newMethod");
15     }
16     protected void step1() {
17         System.out.println("class1 step1");
18     }
19     protected void step2() {
20         System.out.println("class1 step2");
21     }
22 }
23 class Class2 extends AbstractClass{
24     protected void newMethod() {
25         System.out.println("class2 newMethod");
26     }
27     protected void step1() {
28         System.out.println("class2 step1");
29     }
30     protected void step2() {
31         System.out.println("class2 step2");
32     }
33 }
34 public class Client {
35     private static AbstractClass class1 = new Class1();
36     private static AbstractClass class2 = new Class2();
37     public static void main(String[] args) {
38         class1.action();
39         class2.action();
40     }
41 }

View Code

  运行结果

class1 step1
class1 step2
class1 newMethod
class2 step1
class2 step2
class2 newMethod

转载于:https://www.cnblogs.com/xing901022/p/4084944.html

【设计模式】—— 模板方法Template相关推荐

  1. 设计模式--模板方法(Template Method)模式

    模式定义 定义一个操作的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法某些特定步骤 类图 要点总结 Template Method模式是一种非常基础性的设计模式, ...

  2. 设计模式:模板方法(Template Method Pattern)

    模板方法模式: 在一个抽象类公开定义了执行它的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行. 属于行为型模式. spring ioc容器初始化时运用到模板方法模式. / ...

  3. 设计模式-模板方法(Template Method Patten)

    定义一个操作中算法的框架,而将一些步骤延迟到一些子类.使得子类可以不改变一个算法的结构即可重新定义改算法的某些特定步骤 先举一个使用模板方法的小例子方便大家加深印象和理解 首先画下类图 image.p ...

  4. 『设计模式』瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  5. Java设计模式——模板方法模式【Template Method Pattern】

    一.引言 23种设计模式大概分为三大类: 5种(创建型模式):工厂方法模式.抽象工厂模式.单例模式.原型模式.建造者模式. 7种(结构型模式):适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组 ...

  6. JAVA 设计模式 模板方法模式

    定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...

  7. 『设计模式』设计模式--模板方法模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  8. 行为设计模式 - 模板方法设计模式

    模板方法设计模式 模板方法是一种行为设计模式.模板方法设计模式用于创建方法存根,并将一些实现步骤推迟到子类. 目录[ 隐藏 ] 1模板方法设计模式 1.1模板方法抽象类 1.2模板方法具体类 1.3模 ...

  9. java设计模式custom_JAVA 设计模式 模板方法模式

    定义 模板方法模式 (Template Method) 定义了一个操作中的算法的骨架,而将部分步骤的实现在子类中完成. 模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 模 ...

  10. Windows环境下实现设计模式——模板方法模式(JAVA版)

    我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下如何编程实现模板方法模式(设计模式). 不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式 ...

最新文章

  1. addroutes刷新_vue 解决addRoutes动态添加路由后刷新失效问题
  2. ML之Clustering:关于Clustering进阶的那些不可告密的事
  3. c主线程如何等待子线程结束 linux_使用互斥量进行同步 - Linux C进程与多线程入门_Linux编程_Linux公社-Linux系统门户网站...
  4. JAVA_出神入化学习路线大纲
  5. 关掉占用 某端口的进程
  6. Edge 修改字符编码(详细图文)
  7. Vijos——T 1016 北京2008的挂钟 || 洛谷—— P1213 时钟
  8. python requests 上传文件
  9. 扫码点单系统介绍,源码
  10. java编程马拉松比赛_腾讯编程马拉松
  11. ubuntu 安装java运行环境,Ubuntu 安装java环境搭建
  12. 我爱大自然教案计算机,我们热爱大自然教案.doc
  13. 认识Android(常用布局,控件,四大组件,动画,自定义控件及异常消息处理机制)
  14. 关于vscode安装包下载太慢解决方法(详解)
  15. 吴军谷歌方法论005:成就=成功率*事情的量级*做事的速度
  16. opc-ua协议机器数据采集-python
  17. RxJava VS kotlin flow
  18. JavaBean实现多个文件上传的两种方法
  19. 用MATLAB画混淆矩阵 --2018/11/24
  20. 安装和使用 ubuntu 服务器

热门文章

  1. 敲黑板了!网络推广软件教你如何有效提高网站权重?
  2. 企业网络推广专员浅析企业网络推广初期网站优化应重视的一些问题
  3. 网络推广外包——网络推广外包指出网站优化首先考虑关键词分类
  4. java中对集合排序,Java如何对集合中的项目排序?
  5. python的计算符号说明_python中的计算符号
  6. quot;正统quot;函数式编程 两个规则
  7. 检测用户命令序列异常——使用LSTM分类算法【使用朴素贝叶斯,类似垃圾邮件分类的做法也可以,将命令序列看成是垃圾邮件】...
  8. https ddos检测——研究现状
  9. Sphinx 的介绍和原理探索——不存储原始数据,原始数据来源于SQL,而生成索引放在内存或者磁盘中...
  10. 登上软件开发的和谐号