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

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

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();
	}

}



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


参考 http://blog.csdn.net/aaaaaaaa0705/article/details/6281759


你可能感兴趣的:(java,设计模式)