中午吃完飯沒事,我(133用戶)就和 同事張三(130用戶)、李四(131用戶)一塊去高新聯通大廳(gaoxinLianTongHall)交手機費。到了高新聯通大廳(gaoxinLianTongHall),我們發現因爲是中午吃飯時間大廳裏只有一個工作人員,因此我們只好一個一個來辦理交費業務了,首先是張三(130用戶),然後是李四(131用戶),最後是我(133用戶)。 好了,讓我們看看這個過程如何來實現呢: 1、我們先定義聯通大廳(LianTongHall)這樣一個接口類: public interface LianTongHall { public void identifyUserType(LianTongUser user, String type); //判斷用戶類型 public void getUserMoney(String type); //獲得用戶交的錢 } |
|
2、定義聯通大廳(LianTongHall)的具體實現類: public class ConcreteLianTongHall implements LianTongHall { private User130 user130; private User131 user131; private User133 user133; public void identifyUserType(LianTongUser user, String type) { if (type == "130") { user130 = (User130) user; //130用戶 } else if (type == "131") { user131 = (User131) user; //131用戶 } else if (type == "133") { user133 = (User133) user; //133用戶 } } public void getUserMoney(String type) { //得到用戶交的錢 if (type == "130") { user131.pleaseWait(); //131用戶請先等 user133.pleaseWait(); //133用戶請先等 } else if (type == "131") { user130.pleaseWait(); //130用戶請先等 user133.pleaseWait(); //133用戶請先等 } else if (type == "133") { user130.pleaseWait(); //130用戶請先等 user131.pleaseWait(); //131用戶請先等 } } } 3、定義聯通用戶(LianTongUser)接口類: public interface LianTongUser { public void HandInMoney(); //交錢 public void pleaseWait(); //等待 } 4、定義聯通用戶(LianTongUser)接口的實現類: A:130用戶(User130) public class User130 implements LianTongUser { private final String type = "130"; private LianTongHall liantongHall; public User130(LianTongHall liantongHall) { this.liantongHall = liantongHall; liantongHall.identifyUserType(this, type); //聯通大廳判斷是那種用戶 } public void HandInMoney() { System.out.println("130用戶正在交錢!"); liantongHall.getUserMoney(type); //聯通大廳得到用戶交的錢 } public void pleaseWait() { System.out.println("130用戶請先等一會!"); } } B:131用戶(User131) public class User131 implements LianTongUser { private final String type = "131"; private LianTongHall liantongHall; public User131(LianTongHall liantongHall) { this.liantongHall = liantongHall; liantongHall.identifyUserType(this, type); //聯通大廳判斷是那種用戶 } public void HandInMoney() { System.out.println("131用戶正在交錢!"); liantongHall.getUserMoney(type); //聯通大廳得到用戶交的錢 } public void pleaseWait() { System.out.println("131用戶請先等一會!"); } } C:133用戶(User133) public class User133 implements LianTongUser { private final String type = "133"; private LianTongHall liantongHall; public User133(LianTongHall liantongHall) { this.liantongHall = liantongHall; liantongHall.identifyUserType(this, type); //聯通大廳判斷是那種用戶 } public void HandInMoney() { System.out.println("133用戶正在交錢!"); liantongHall.getUserMoney(type); //聯通大廳得到用戶交的錢 } public void pleaseWait() { System.out.println("133用戶請先等一會!"); } } 5、編寫測試類: public class Test { public static void main(String[] args) { LianTongHall gaoxinLianTongHall = new ConcreteLianTongHall(); //高新聯通大廳 User130 zhangsan = new User130(gaoxinLianTongHall); //張三 User131 lisi = new User131(gaoxinLianTongHall); //李四 User133 me = new User133(gaoxinLianTongHall); //我 zhangsan.HandInMoney(); //張三交錢 lisi.HandInMoney(); //李四交錢 me.HandInMoney(); //我交錢 } }