溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java模板模式的示例分析

發(fā)布時間:2021-08-10 09:12:04 來源:億速云 閱讀:126 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹java模板模式的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    Java設(shè)計模式-模板模式

    什么是模板模式?

    模板模式,顧名思義,就是通過模板拓印的方式。

    定義模板,就是定義框架、結(jié)構(gòu)、原型。定義一個我們共同遵守的約定。

    定義模板,我們的剩余工作就是對其進行充實、豐潤,完善它的不足之處。

    定義模板采用抽象類來定義,公共的結(jié)構(gòu)化邏輯需要在抽象類中完成,只將非公共的部分邏輯抽象成抽象方法,留待子類充實實現(xiàn)。

    下面首先通過一個簡單的程序來分析一下,例如:現(xiàn)在有三種類型:豬、機器人、人;

    • 豬具備三種功能:吃、睡、跑

    • 機器人又兩個功能:吃、工作

    • 人具備四個功能:吃、睡、跑、工作。

    現(xiàn)在就要求設(shè)計一個程序,可以讓這三類不同的類型,進行工作?,F(xiàn)在給出的三個類實際上并沒有任何聯(lián)系

    UML圖:

    java模板模式的示例分析

    源代碼:

    abstract class Action{
    	public static final int EAT = 1;
    	public static final int SLEEP = 5;
    	public static final int RUN = 20;
    	public static final int WORK = 30;
    	public abstract void eat();
    	public abstract void sleep();
    	public abstract void run();
    	public abstract void work();
    	public void order(int flag){
    		switch(flag){
    			case EAT:
    				this.eat();
    				break;
    			case SLEEP:
    				this.sleep();
    				break;
    			case RUN:
    				this.run();
    				break;
    			case WORK:
    				this.work();
    				break;
    			case EAT+WORK:
    				this.eat();
    				this.work();
    				break;
    			case EAT+WORK+RUN+SLEEP:
    				this.eat();
    				this.sleep();
    				this.run();
    				this.work();
    				break;
    			case EAT+RUN+SLEEP:
    				this.eat();
    				this.sleep();
    				this.run();
    				break;
    		}
    	}
    }
    class Person extends Action{
    	public void eat(){
    		System.out.print("人吃,");
    	}
    	public void sleep(){
    		System.out.print("人睡,");
    	}
    	public void run(){
    		System.out.print("人跑,");
    	}
    	public void work(){
    		System.out.print("人工作,");
    	}
    }
    class Pig extends Action{
    	public void eat(){
    		System.out.print("豬吃,");
    	}
    	public void sleep(){
    		System.out.print("豬睡,");
    	}
    	public void run(){
    		System.out.print("豬跑,");
    	}
    	public void work(){}
    }
    class Robet extends Action{
    	public void eat(){
    		System.out.print("機器人吃,");
    	}
    	public void sleep(){}
    	public void run(){}
    	public void work(){
    		System.out.print("機器人工作,");
    	}
    }
    public class MoBan{
    	public static void main(String args[]){
    	/*	
    人吃,人睡,人跑,人工作,
    豬吃,豬睡,豬跑,
    機器人吃,機器人工作,
    	*/
    		Action ren = new Person();
    		ren.order(Action.EAT+Action.SLEEP+Action.RUN+Action.WORK);
    		System.out.println();
    		Action pig = new Pig();
    		pig.order(Action.EAT+Action.SLEEP+Action.RUN);
    		System.out.println();
    		Action robet = new Robet();
    		robet.order(Action.EAT+Action.WORK);
    	}
    }

    實際上通過此程序的定義結(jié)構(gòu)你可以清楚的發(fā)現(xiàn)一個問題:

    • 抽象類在實際的使用過程之中會定義一些固化的模式,它只能接受幾種特定的指令;但是每種指定的具體實現(xiàn)由子類負責(zé)完成,我們父類只是做了方法的約定。

    以上是“java模板模式的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

    向AI問一下細節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI