java中大概有21种设计模式,先看第一种,模版方法设计模式。
从一个简单的例子引出模版方法设计模式:
用for、while、do-while三种循环分别测出1到100的和;
一般的写法是:
public class Test{
pubic static void main(String[] args){
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);
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也是同样的循环,这样除了循环体在变,其实其余的代码都没有变,这个时候就可以用模版方法设计模式将变化的代码和不变的代码分离开了。
先看下面的代码:
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>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
设计模式应用,自己练手用的设计模式应用,总的而言是个简单的demo而已,练手练手
完整的C#设计模式PDF版 C#设计模式(1) 4 一、 C# 面向对象程序设计复习 5 二、 设计模式举例 5 三、 先有鸡还是先有蛋? 7 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 8 五、 .net本质 9 C#设计模式(2) 11 一、 ...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
第1章 面向对象程序设计、设计模式和ActionScript 3.0 成功之后的喜悦 OOP基础 抽象 封装 继承 多态性 使用设计模式进行软件开发的原则 使用接口而不是具体的实现 养成使用组合的习惯 计划项目时要同时...
本文是我花三块钱买的,本文首先介绍设计模式产生的背景,然后以简单、易懂且具通用性的Drawcli程序为例,详细分析其中采用的三种设计模式:Prototype、Observer及Chain of Responsibibility 在Drawcli程序中的应用....
C#设计模式(1) 一、 C# 面向对象程序设计复习 二、 设计模式举例 三、 先有鸡还是先有蛋? 四、 大瓶子套小瓶子还是小瓶子套大瓶子? 五、 .net本质 C#设计模式(2) 一、 "开放-封闭"原则(OCP) 二、 ...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
处理对象的多种状态及其相互转换——状态模式,算法的封装与切换——策略模式,模板方法模式深度解析,操作复杂对象结构——访问者模式,设计模式与足球,多人联机射击游戏中的设计模式应用,设计模式综合实例分析之...
├─第三章 创建型设计模式-单例设计模式和应用 │ 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(创造者)...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...