1. 程式人生 > >設計模式 (十七) 門面模式

設計模式 (十七) 門面模式

門面模式 也叫外觀模式,是一種常用的封裝模式。 要求一個子系統的外部與其內部通訊必須通過一個統一的物件進行。 門面模式提供一個高層次的介面,使得子系統更易於使用。

舉個例子,對應一個寫信的過程,就是一個人自己寫信,先寫內容,再寫信封,再放到信封裡,然後郵寄。後來郵局開了個服務,只要告訴我內容和地址就可以了,其他的就不用管了。這就是門面模式。

簡單的說, 門面物件是外界訪問子系統內部的唯一通道,不管子系統內部多麼雜亂無章,只要門面物件在,就能做到“金玉其外,敗絮其中”。

門面模式的角色

  • Facade 門面角色
  • subsystem 子系統角色。 可以有一個或多個子系統,每個子系統可以是一個類也可以是一個類的集合。 子系統並不知道門面的存在。
public class A{
	public void doSomethingA(){
	}
}

public class B{
	public void doSomethingB(){
	}
}

public class C{
	public void doSomethingC(){
	}
}


public class Facade{
	private A a =new A();
	private B b =new B();
	private C c =new C();
    public void methodA(){
	a.doSomethingA();
}

publ;ic void methodB(){
	b.doSomethingB();
}
public void methodC(){
	c.doSomethingC();
}
}

門面模式的優點

  • 減少系統間的依賴。 封裝子系統
  • 提高靈活性。 只要門面物件不變就可以了
  • 提高安全性

門面模式的缺點

不符合開閉原則。

門面模式的使用場景

  • 為一個複雜的模組或系統提供一個供外界訪問的介面
  • 子系統相對獨立。外界對子系統的訪問只需要黑箱操作。
  • 預防低水平帶來的風險擴散