模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画笔种类而定.拿黑色签字笔当画笔,结果当然就是签字笔的字样;当用铅笔来画,得到的也只会是灰黑色的铅笔字;如果用五颜六色的彩色笔,自然能创出让人眼花的多色字.但是,无论使用哪种文具,制作出来的字样都还是脱不了模板上已经固定的形状。
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();
}
}
参考 http://blog.csdn.net/aaaaaaaa0705/article/details/6281759