设计模式(三)模版方法(行为型)-阿里云开发者社区

开发者社区> 老朱教授> 正文

设计模式(三)模版方法(行为型)

简介:
+关注继续查看

模板方法模式:定义一个算法的执行骨架,将具体的算法实现延迟到子类完成。

模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method),这个设计模式的名字就是从此而来。

举个例子: 在现实生活中,很多事情都包含几个实现步骤,例如请客吃饭,无论吃什么,一般都包含点单、吃东西、买单等几个步骤,通常情况下这几个步骤的次序是:点单 --> 吃东西 --> 买单。在这三个步骤中,点单和买单大同小异,最大的区别在于第二步——吃什么?吃面条和吃满汉全席可大不相同。

 

代码说明一切                                                                                

这里,代码以一个看模版方法用了多少时间的例子来说明一下:

复制代码
package com.yydcdut.java2;

public abstract class GetTime {
    public void getTime()
    {
        long time1 = System.currentTimeMillis();
        this.doSomething();
        long time2 = System.currentTimeMillis();
        System.out.println("耗时:"+(time2-time1));
        
    }
    
    public abstract void doSomething();
}
复制代码
复制代码
package com.yydcdut.java2;

public class Demo extends GetTime {

    @Override
    public void doSomething() {
        for(int i=0;i<10000;i++)
            System.out.println(""+i);

    }

}
复制代码
复制代码
package com.yydcdut.java2;

public class Main {
    public static void main(String[] args) {
        GetTime gt = new Demo();
        gt.getTime();
    }
}
复制代码

总结                                                                                          

模板方法模式:抽象的骨架类,具体的实现类。

优点:使用模板方法模式,在定义算法骨架的时候,可以灵活的实现具体的算法。满足用户多变的需求。

缺点:假如算法骨架有改动,就需要修改抽象类,那么,具体的实现类,也会跟着修改。




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3842819.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
初探Java设计模式3:行为型模式(策略,观察者等)
转自https://javadoop.com/post/design-pattern 行为型模式 策略模式 观察者模式 责任链模式 模板方法模式 状态模式 行为型模式总结 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.
2369 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4512 0
设计模式 ( 十三 ) 命令模式Command(对象行为型)
<p><strong><a target="_blank" href="http://blog.csdn.net/hguisu/article/details/7549895" style="color:rgb(51,102,153); text-decoration:none; font-family:'Microsoft YaHei'; line-height:30px"><span
1170 0
设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
<span style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px">1.概述</span><br style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"><blockquote s
1274 0
设计模式之九(模版方法模式)
原文:设计模式之九(模版方法模式) 前言 模版方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 结构图 代码实现  AbstractClass是抽象类,其实也就是一抽象类,定义并实现了一个模版方法,这个模版方法一般是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类实现。
454 0
设计模式 ( 十八 ) 策略模式Strategy(对象行为型)
<p style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"> <span style="font-weight:bold"><span class="link_title"><a target="_blank" href="http://blog.csdn.net/hguisu/a
1108 0
设计模式 ( 十九 ) 模板方法模式Template method(类行为型)
<p style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"> <strong><a target="_blank" href="http://blog.csdn.net/hguisu/article/details/7564039" style="color:rgb(51,102,
1194 0
设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)
<div style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"> <strong>特此说明:对访问者模式理解不是特别透彻,若有误,请指正,谢谢!</strong> </div> <div style="color:rgb(51,51,51); font-family:Arial;
1303 0
+关注
3546
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载