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