java设计模式-Template Method(模板方法)模式
程序员文章站
2022-07-12 18:33:06
...
模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画笔种类而定.拿黑色签字笔当画笔,结果当然就是签字笔的字样;当用铅笔来画,得到的也只会是灰黑色的铅笔字;如果用五颜六色的彩色笔,自然能创出让人眼花的多色字.但是,无论使用哪种文具,制作出来的字样都还是脱不了模板上已经固定的形状。
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