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

本文介绍了一种软件设计模式——模板方法模式,并提供了具体的Java代码实现示例。该模式定义了一个操作中的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
[size=medium]模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画笔种类而定.拿黑色签字笔当画笔,结果当然就是签字笔的字样;当用铅笔来画,得到的也只会是灰黑色的铅笔字;如果用五颜六色的彩色笔,自然能创出让人眼花的多色字.但是,无论使用哪种文具,制作出来的字样都还是脱不了模板上已经固定的形状。[/size]


package template;

/*
* 抽象类,充当模板角色
* @author administrator
*
*/

public abstract class Template {

//由子类实现的抽象方法
public abstract void open();
public abstract void print();
public abstract void close();
//抽象类实现的方法,final可以保证在子类不会被修改
public final void display() {
open(); //先open...
for(int i=0; i < 5; i++) { //反复输出5次
print();
}
close(); //输出完毕,close
}

}



package template;
/*
* 类B,实现了三抽象方法,继承了display的方法,先执行open,在执行print,再执行close;
*/
public class CharDisplay extends Template {

private char ch;

public CharDisplay(char ch) {
this.ch = ch;
}

public void close() {
System.out.print(">>");

}


public void open() {
System.out.print("<<");

}

public void print() {

System.out.print(ch);

}

}




package template;
/*
* 类A,实现了三抽象方法,继承了display的方法,先执行open,在执行print,再执行close;
*/
public class StringDisplay extends Template {

private String s;

public StringDisplay(String s) {
this.s = s;
}

public void close() {
System.out.println("--------------");

}


public void open() {
System.out.println("--------------");

}


public void print() {

System.out.println(s);


}

}





package template;

public class Test {
public static void main(String[] args) {
/*
* 通过接口构造两个不同的实现类对象,执行了同样的模板方法,只是内容不同
*/
Template t1 = new CharDisplay('S');
Template t2 = new StringDisplay("helloWold");

t1.display();
System.out.println();
t2.display();
}

}



[img]http://dl.iteye.com/upload/attachment/0072/4161/2f310a6b-517b-3cd1-bf8e-525556e83197.jpg[/img]


参考 http://blog.youkuaiyun.com/aaaaaaaa0705/article/details/6281759
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值