`
stanxl
  • 浏览: 4025 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

模版方法设计模式简单应用

 
阅读更多

java中大概有21种设计模式,先看第一种,模版方法设计模式。
从一个简单的例子引出模版方法设计模式:
用for、while、do-while三种循环分别测出1到100的和;
一般的写法是:

public class Test{  
pubic static void main(String[] args){  
    //for循环
    long start = System.currentTimeMillis();
    int sum = 0;
    for(int i = 1; i <=100 ; i++){
        sum += i;
    }
    System.out.println(sum);
    long end = System.currentTimeMillis();
    System.out.println(end-start); 
//while循环
long start = System.currentTimeMillis();
    int sum = 0;
    for(int i = 1; i <=100 ; i++){
        sum += i;
    }
    System.out.println(sum);
    long end = System.currentTimeMillis();
    System.out.println(end-start); 
//do-while循环同上,此处省略

同样do-while也是同样的循环,这样除了循环体在变,其实其余的代码都没有变,这个时候就可以用模版方法设计模式将变化的代码和不变的代码分离开了。
先看下面的代码:

import java.util.*;
abstract class Template{
    private String name;

    Template(String name){
        this.name = name;
    }

    public abstract void code();

    public long test(){
        System.out.print(name + "测试:");
        long start = System.nanoTime();
        code();
        long end = System.nanoTime();
        return end - start;
    }
}

class ForTest extends Template{
    ForTest(String name){
        super(name);
    }
    public void code(){
        int sum = 0;
        for(int i = 1; i <= 100; i++){
            sum += i;
        }
        System.out.print(sum + ";用时:");
    }
}
class WhileTest extends Template{
    WhileTest(String name){
        super(name);
    }
    public void code(){
        int sum = 0;
        int i = 1;
        while(i <= 100){
            sum += i;
            i++;
        }
        System.out.print(sum + ";用时:");
    }
}
class DoWhileTest extends Template{
    DoWhileTest(String name){
        super(name);
    }
    public void code(){
        int sum = 0;
        int i = 1;
        do{
            sum += i;
            i++;
        }while(i <= 100);
        System.out.print(sum + ";用时:");
    }
}
public class Test{

    public static void main(String[] args){
        ForTest ft = new ForTest("for循环");
        WhileTest wt = new WhileTest("while循环");
        DoWhileTest dwt = new DoWhileTest("do-while循环");

        System.out.println(ft.test() + "纳秒");
        System.out.println(wt.test() + "纳秒");
        System.out.println(dwt.test() + "纳秒");
    }
}

输出结果如下:这里写图片描述

将相同的代码都放在Template类里,将要变化的代码,写在单独的子类里,去继承Template类,在Template类里,将要变化的代码抽象成一个code()方法,子类再去访问
这里只一个模版方法的一个小小的例子,后续再完善,去做一些稍复杂的事情,欢迎指教!!

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    设计模式应用模板.md

    设计模式应用,自己练手用的设计模式应用,总的而言是个简单的demo而已,练手练手

    C#设计模式.PDF

    完整的C#设计模式PDF版 C#设计模式(1) 4 一、 C# 面向对象程序设计复习 5 二、 设计模式举例 5 三、 先有鸡还是先有蛋? 7 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 8 五、 .net本质 9 C#设计模式(2) 11 一、 ...

    研磨设计模式(完整带书签).part2.pdf

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    ActionScript 3.0设计模式扫描版_方红琴译

    第1章 面向对象程序设计、设计模式和ActionScript 3.0 成功之后的喜悦 OOP基础 抽象 封装 继承 多态性 使用设计模式进行软件开发的原则 使用接口而不是具体的实现 养成使用组合的习惯 计划项目时要同时...

    设计模式在Drawcli程序中的应用

    本文是我花三块钱买的,本文首先介绍设计模式产生的背景,然后以简单、易懂且具通用性的Drawcli程序为例,详细分析其中采用的三种设计模式:Prototype、Observer及Chain of Responsibibility 在Drawcli程序中的应用....

    C#设计模式大全

    C#设计模式(1) 一、 C# 面向对象程序设计复习 二、 设计模式举例 三、 先有鸡还是先有蛋? 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 五、 .net本质 C#设计模式(2) 一、 "开放-封闭"原则(OCP) 二、 ...

    研磨设计模式(完整带书签).part1.pdf

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    Java设计模式 版本2

    处理对象的多种状态及其相互转换——状态模式,算法的封装与切换——策略模式,模板方法模式深度解析,操作复杂对象结构——访问者模式,设计模式与足球,多人联机射击游戏中的设计模式应用,设计模式综合实例分析之...

    小D深入浅出设计模式+框架源码剖析实战

    ├─第三章 创建型设计模式-单例设计模式和应用 │ 3.1江湖传言里的设计模式-单例设计模式.mp4 │ 3.2代码实战-单例设计模式中的懒汉实现方式.mp4 │ 3.4单例模式中的饿汉实现和选择问题.mp4 │ 3.5JDK源码里面...

    各种设计模式及解析

    5、模板方法 Template Method (定义一个操作中的算法骨架,将其具体算法延迟到子类中) 6、单例 Singleton (保证应用程序中,某个类只有一个实例存在) 7、代理模式、观察者模式、工厂模式、装饰模式等

    深入浅出设计模式(中文版)

    1.1什么是设计模式 2 1.2设计模式的作用 3 1.3GRASP模式的分类 4 1.4GoF设计模式的分类 4 1.5模式的学习阶段 6 第2章负责任地设计对象——GRASP 9 2.1InformationExpert(信息专家) 11 2.2Creator(创造者)...

    [源代码] 《易学 设计模式》 随书源代码

    ☆ 资料说明:☆ 《易学 设计模式》 郭志学 编著 随书源代码 ☆ 章节清单:☆ 第01章 欲速则不达:了解设计模式 第02章 磨刀不误砍柴工:UML语言概述 ...第27章 无招胜有招:如何在设计中应用设计模式

    深入浅出设计模式(中文版电子版)

    1.1什么是设计模式 2 1.2设计模式的作用 3 1.3GRASP模式的分类 4 1.4GoF设计模式的分类 4 1.5模式的学习阶段 6 第2章负责任地设计对象——GRASP 9 2.1InformationExpert(信息专家) 11 2.2Creator(创造者)...

    研磨设计模式-part2

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式-part4

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式-part3

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式.part3(共4个)

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式.part2(共4个)

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式.part4(共4个)

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

    研磨设计模式.part1(共4个)

    如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...

Global site tag (gtag.js) - Google Analytics