外觀模式其實很好理解的,就是將表面的東西展現給人看,內部的東西你不知道的(由于已封裝好了),比如1個外部系統要和公司內部5個系統進行交互,而這5個系統之間也有交互,那末第1種就是外部系統和5個系統都進行交互;第2種就是做1個接口將外部系統需要的邏輯封裝成1個方法,該方法中包括了關于5個系統的交互方式,這樣外部系統就不用直接和5個系統交互了,直接調用接口完事。外觀模式也叫門面模式,其實說白了就是把要用的東西封裝起來使交互更加方便。
外觀模式定義:為子系統中的1組接口提供1個1致的界面,此模式定義了1個高層接口,這個接口使得這1子系統更加容易使用。
<<大話設計模式>>在這章節中以買股票為故事情節展開的,說買股票需要學習很多知識,1個不懂股票的人買會吃虧,所以不如買基金,基金是有職業經理人去操作,用外觀模式來講的話,職業經理人就是門面,關于錢如何進行投資自己不關心,自己關心的是掙錢了沒有。
差不多理解了外觀模式了,小2,該上代碼了。
1、系統1和2,就是客戶端不關心與系統1、2交互
public class SubSystemOne {
public void method(){
System.out.println("這是系統1");
}
}
public class SubSystemTwo {
public void method(){
System.out.println("這是系統2");
}
}
2外觀類,將客戶端要交互的系統邏輯封裝
public class Facade {
SubSystemOne one;
SubSystemTwo two;
public Facade(){
one = new SubSystemOne();
two = new SubSystemTwo();
}
//要處理的邏輯,將外部系統與one、two系統交互的邏輯放這里,外部系統就不用和one、two交互了,直接與外觀類交互
public void method(){
one.method();
two.method();
}
}
3、客戶端
public class FacadeClient {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
//直接與外觀類交互,在此看不到one、two系統
Facade facade = new Facade();
facade.method();
}
}
看到客戶端直接和門面類Fa?ade交互就OK了,根本不知道系統1、2類的存在。這就是傳說中的外觀模式,沒用過不知道,學習了感覺也就那樣
附上模式結構圖
總結:對復雜難以保護的老系統,直接去改或去擴大都可能產生很多的問題,那末我們如果去開法1個Fa?ade與老系統的交互,那末以后直接開發新系統調用這個接口就能夠了,這就是外觀模式,1個低調而又美麗的人……
下一篇 B/S學習困惑集錦