外觀模式在我們的項(xiàng)目中使用的還是比較普遍的。外觀模式遵守了設(shè)計(jì)模式六大原則之一的迪米特法則(最少知識(shí)法則),一個(gè)應(yīng)用實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用。 外觀模式的實(shí)用性: 1.為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口。 2.提高子系統(tǒng)的獨(dú)立性。 3.在層次化結(jié)構(gòu)中,可以使用外觀模式定義系統(tǒng)中每一層的入口。 舉個(gè)例子:這個(gè)例子跟代理模式里面的例子一樣還是關(guān)于接項(xiàng)目的事情,假如說(shuō)我在北京工作,接了一個(gè)上海的項(xiàng)目,但是由于太遠(yuǎn)我又不想去上海,怎么辦呢?此時(shí)剛好我一個(gè)同學(xué)在上海上班,于是我就跟我的同學(xué)聯(lián)系,讓他幫我把這個(gè)項(xiàng)目談過(guò)來(lái)。接項(xiàng)目肯定需要 面談—>起草合同—>收首款—>做項(xiàng)目—>收尾款。除了完成項(xiàng)目的過(guò)程是由我本人執(zhí)行之外,其他的都是由我同學(xué)來(lái)處理的。就在此時(shí),我另一個(gè)同學(xué)在北京也是接了一個(gè)上海的項(xiàng)目,他了解了我同學(xué)幫我談項(xiàng)目的事情以后,也想找他幫忙。這樣我和北京同學(xué)我倆就沒(méi)必要直接跟上海的打交道了,而是由上海的同學(xué)處理。
通過(guò)上圖就可以知道外觀模式的作用了,節(jié)省了很多步驟,不然的話就會(huì)是第一種情況,那樣的話就得不償失了。 示例代碼: PRoject接口
面談Interview類
public class Interview implements Project { @Override public String doSth() { return "interview--->"; }}起草合同DrafContract類
public class DrafContract implements Project { @Override public String doSth() { return "drafContract--->"; }}收首款ReceiveFirst類
public class ReceiveFirst implements Project { @Override public String doSth() { return "receiveFirst--->"; }}收尾款EndParagraph類
public class EndParagraph implements Project { @Override public String doSth() { return "endParagraph--->"; }}同學(xué)Schoolmate類
public class Schoolmate { public void doSth(){ Project interview = new Interview(); System.out.println(interview.doSth()); Project drafContract = new DrafContract(); System.out.println(drafContract.doSth()); Project receiveFirst = new ReceiveFirst(); System.out.println(receiveFirst.doSth()); Project endParagraph = new EndParagraph(); System.out.println(endParagraph.doSth()); }}測(cè)試代碼
new Schoolmate().doSth();運(yùn)行效果圖
外觀模式到這里就結(jié)束,其實(shí)我們通用的工具類就是這個(gè)模式。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注