門面模式--案例解析

重新複習了一遍門面模式,又有來新的體會,古人云:讀書百遍,其義自見,不無道理。所以,一定要多思!多動手,你纔會成長。

來說說什麼是門面模式:

大家肯定都知道醫院(不知道的童鞋,我無能爲力,老衲道行不高,表示救不了你,去找觀世音菩薩吧,哦!),你去醫院看病,一般得經過4個模塊,即:掛號->看病->取藥->收費.   大家肯定多這些模塊很熟悉了,但是有的人有可能不熟悉,對把,這時候我們就需要一個接待員來負責接待他們,

清單1:掛號

public class 掛號 {
    public void operation1(){
    	System.out.println("掛號");
    }
}


清單2:看病

public class 看病 {
   public void operantion2(){
	   System.out.println("看病");
   }
}


清單3:取藥
public class 取藥 {
	public void operation3(){
		System.out.println("取藥");
	}
}


清單4:收費
public class 收費 {
	public void operation4(){
	  System.out.println("收費");
	}
}


清單5:接待員

public class 接待員 {
	public void 接待() {
		System.out.println("您好,我是醫院接待員:");
		掛號 t1 = new 掛號();
		t1.operation1();

		看病 t2 = new 看病();
		t2.operantion2();

		取藥 t3 = new 取藥();
		t3.operation3();

		收費 t4 = new 收費();
		t4.operation4();
	}
}


清單6:模擬場景

public class 醫院 {
	public static void main(String[] args) {
		接待員 t=new 接待員();
		t.接待();
	}
}


清單7:輸出

您好,我是醫院接待員:
掛號
看病
取藥
收費

可以看出,如果病人需要看病,只需要找接待員即可。

除了方便了病人看病。其實門面模式還有一個優點:省略病人不需要知道的方法或者模塊,什麼意思呢?大家先自己想3-5分鐘。

解答:其實是這樣的,病人去醫院看病,比如得了一個皮膚病,那他應該到皮膚科去看。但是醫院裏面有很多科,比如:心臟外科,神經外科,泌尿外科,骨科,普通外科,麻醉科。病人可能第一次去醫院,他哪裏懂那麼多!得了皮膚病直接奔心臟外科去了,這。。。。。(老衲道行不高,也救不了他!)

但是,對業務很熟悉的接待元那可就不一樣了,他立馬就可以知道去哪個科看病

好了,假如病人知道自己去皮膚科看病,皮膚科的醫生幫他看完病,讓讓在門口等着化驗結果,化驗的過程需要安靜,可這個病人可能很土,又不懂規矩,以爲醫生不理會他,直接衝進去找醫生理論。醫生表示很無奈!但是有了接待員,就不一樣了,他會引導病人!醫生在化驗這個過程,接待元會告訴他不需要知道!看病這個模塊內部的方法細節就對病人透明!

代碼清單:掛號

public class 掛號 {
    public void operation1(){
    	System.out.println("掛號");
    }
}


代碼清單:看病(代碼有變動)

public class 看病 {
   public void operantion2(){
	   System.out.println("看病");
   }
   public void ohter_operation(){
	   System.out.println("醫生正在進行化驗");
   }
}


代碼清單:取藥

public class 取藥 {
	public void operation3(){
		System.out.println("取藥");
	}
}


代碼清單:收費
public class 收費 {
	public void operation4(){
	  System.out.println("收費");
	}
}

代碼清單:接待員

public class 接待員 {
	public void 接待() {
		System.out.println("您好,我是醫院接待員:");
		掛號 t1 = new 掛號();
		t1.operation1();

		看病 t2 = new 看病();
		t2.operantion2();

		取藥 t3 = new 取藥();
		t3.operation3();

		收費 t4 = new 收費();
		t4.operation4();
	}
}


代碼清單:模擬場景
public class 醫院 {
	public static void main(String[] args) {
		接待員 t=new 接待員();
		t.接待();
	}
}

我們可以看出,有些是模塊內部的方法(看病中的other_operation(),不需要被外部的調用者知道),使用門面模式,就能很好的做到這一點!

以上是我一字字敲出來的,轉帖請聲明出處,謝謝!




發佈了66 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章