博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java常用设计模式十:模板模式
阅读量:5327 次
发布时间:2019-06-14

本文共 1234 字,大约阅读时间需要 4 分钟。

一、定义

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

如果上面的话不好理解,请看下面的例子

二、示例

1)定义一个模板类:原则就是将所有子类通用的功能直接放在模板类里面,每个子类独有的功能放到子类来实现,不管是哪个子类,都要执行excute里面容的内容。

public abstract class Template {    //通用功能,所有的子类都要执行的方法    public void beforeAction(){        System.out.println("记录开始时间");    }    //这是一个钩子方法,里面的业务逻辑是由子类来实现的    public abstract void action();    //通用功能,所有的子类都要执行的方法    public void afterAction(){        System.out.println("记录完成时间");    }    //上面定义里面说的算法骨架,其实主要就是体现在这里,主要是完成某一个功能所需要的步骤,所有的子类都会执行该步骤,只不过每个步骤实现的细节可能不同    public void excute(){        this.beforeAction();        this.action();        this.afterAction();    }}

2)第一个模板实现类:

public class TemplateImpl1 extends Template {    public void action() {        System.out.println("这是第一个模版实现类");    }}

3)第二个模板实现类:

public class TemplateImpl2 extends Template {    public void action() {        System.out.println("这是第二个模版实现类");    }}

4)测试类:

public class Client {    public static void main(String[] args){        Template template1 = new TemplateImpl1();        Template template2 = new TemplateImpl2();        template1.excute();        template2.excute();    }}
记录开始时间这是第一个模版实现类记录完成时间记录开始时间这是第二个模版实现类记录完成时间

 

转载于:https://www.cnblogs.com/boshen-hzb/p/10256419.html

你可能感兴趣的文章
Char03 Ansible 组件介绍
查看>>
ngingx安装错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
查看>>
C#综合揭秘——深入分析委托与事件
查看>>
[Gamma阶段]第四次Scrum Meeting
查看>>
Requirement-Driven Linux Shell Programming
查看>>
Javascript--闭包
查看>>
子组件触发父组件的方法
查看>>
(转)CocosCreator零基础制作游戏《极限跳跃》五、制作游戏主场景背景滚动
查看>>
在线读取office 文件(Word excel 等)
查看>>
DataTable转成字符串复制到txt文本
查看>>
【转】NSBundle的使用,注意mainBundle和Custom Bundle的区别
查看>>
ES6初步学习
查看>>
413. Arithmetic Slices(LeetCode)
查看>>
winrar大全+压缩
查看>>
zoj 3599 Game 博弈论
查看>>
App接口如何保证安全
查看>>
asp.net状态服务文章阅读
查看>>
Response.End方法
查看>>
NYOJ 49 开心的小明(01背包)
查看>>
C# FTP 命令无法获取ServerU目录列表问题
查看>>