外觀模式在我們的項目中使用的還是比較普遍的。外觀模式遵守了設計模式六大原則之一的迪米特法則(最少知識法則),一個應用實體應當盡可能少的與其他實體發生相互作用。 外觀模式的實用性: 1.為一個復雜子系統提供一個簡單接口。 2.提高子系統的獨立性。 3.在層次化結構中,可以使用外觀模式定義系統中每一層的入口。 舉個例子:這個例子跟代理模式里面的例子一樣還是關于接項目的事情,假如說我在北京工作,接了一個上海的項目,但是由于太遠我又不想去上海,怎么辦呢?此時剛好我一個同學在上海上班,于是我就跟我的同學聯系,讓他幫我把這個項目談過來。接項目肯定需要 面談—>起草合同—>收首款—>做項目—>收尾款。除了完成項目的過程是由我本人執行之外,其他的都是由我同學來處理的。就在此時,我另一個同學在北京也是接了一個上海的項目,他了解了我同學幫我談項目的事情以后,也想找他幫忙。這樣我和北京同學我倆就沒必要直接跟上海的打交道了,而是由上海的同學處理。 通過上圖就可以知道外觀模式的作用了,節省了很多步驟,不然的話就會是第一種情況,那樣的話就得不償失了。 示例代碼: 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--->"; }}同學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()); }}測試代碼
new Schoolmate().doSth();運行效果圖 外觀模式到這里就結束,其實我們通用的工具類就是這個模式。
新聞熱點
疑難解答