下面就是gofo設計模式的uml設計圖
ps : 門面模式就是隱藏細節,讓對方知道更少東東。原則就是迪特公尺原則
其實說白了,看這個圖一般還是看不明白有什麼毛用。
舉例 1,比如說我們吃的,坑的雞,香村雞,我們去點乙個獅子頭雙拼,雞店暴露給我們的直接就是我們包裝好點,菜,飯,筷子。
具體的細節,比如說菜譜,菜,飯是怎麼做的。其實我們不是知道的。
2,我們天天乘坐的電梯也是,電梯暴露給我們就只是幾個按鈕。具體電梯是這麼運轉的,其實我們是不知道的。
public
class
request
implements
servletrequest
public string geturi()
private string parseuri(string requeststring)
return
null;
} //通過輸入流轉換url 這個方法是屬於request物件的,但是這個方法又不想讓外面的系統知道。
public
void
parse()
catch (ioexception e)
for (int j=0; j/* implementation of the servletrequest*/
public object getattribute(string attribute)
public enumeration getattributenames()
public string getrealpath(string path)
public requestdispatcher getrequestdispatcher(string path)
public
boolean
issecure()
public string getcharacterencoding()
public
intgetcontentlength()
public string getcontenttype()
public servletinputstream getinputstream() throws ioexception
public locale getlocale()
public enumeration getlocales()
public string getparameter(string name)
public map getparametermap()
public enumeration getparameternames()
public string getparametervalues(string parameter)
public string getprotocol()
public bufferedreader getreader() throws ioexception
public string getremoteaddr()
public string getremotehost()
public string getscheme()
public string getservername()
public
intgetserverport()
public
void
removeattribute(string attribute)
public
void
setattribute(string key, object value)
public
void
setcharacterencoding(string encoding)
throws unsupportedencodingexception
}public
class
requestfacade
implements
servletrequest
/* implementation of the servletrequest*/
public object getattribute(string attribute)
public enumeration getattributenames()
public string getrealpath(string path)
public requestdispatcher getrequestdispatcher(string path)
public
boolean
issecure()
public string getcharacterencoding()
public
intgetcontentlength()
public string getcontenttype()
public servletinputstream getinputstream() throws ioexception
public locale getlocale()
public enumeration getlocales()
public string getparameter(string name)
public map getparametermap()
public enumeration getparameternames()
public string getparametervalues(string parameter)
public string getprotocol()
public bufferedreader getreader() throws ioexception
public string getremoteaddr()
public string getremotehost()
public string getscheme()
public string getservername()
public
intgetserverport()
public
void
removeattribute(string attribute)
public
void
setattribute(string key, object value)
public
void
setcharacterencoding(string encoding)
throws unsupportedencodingexception
}public
class
servletprocessor
catch (ioexception e)
class myclass = null;
try
catch (classnotfoundexception e)
servlet servlet = null;
//這裡暴露給servlet裡的service方法,就是包裝處理過的
tomcat 的門面模式使用很多。init(servletconfig)就是包裝之後的,service(request,respone)也是包裝之後的,dofilter(request,respone) 也是包裝之後的
servletcontext也是包裝之後的。
閘道器系統就是門面模式的寫真
設計模式 門面模式
一 門面模式概述 門面模式是物件的結構模式,外部與乙個子系統的通訊必須通過乙個統一的門面物件進行。門面模式提供乙個高層次的介面,使得子系統更易於使用。1 門面角色 facade 這是門面模式的核心。它被客戶角色呼叫,因此它熟悉子系統的功能。它內部根據客戶角色已有的需求預定了幾種功能組合。2 子系統角...
設計模式 門面模式
門面模式 外觀模式 將子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。1 它對客戶遮蔽子系統元件,因而減少了客戶處理的物件的數目並使得子系統使用起來更加方便。2 它實現了子系統與客戶之間的松耦合關係,而子系統內部的功能元件往往是緊耦合的。3 如果...
《設計模式》 門面模式
提供乙個門面去呼叫系統各個子模組,客戶端呼叫門面,減少客戶端與系統中各個子模組的互動,鬆散耦合,facade知道各個子模組,而各個子模組不應該知道facade的存在 客戶端也可以直接呼叫各個子模組,有外觀也可以不使用 當需要呼叫系統內部多個子模組的時候,為了避免客戶端分別呼叫子模組,提供乙個門面,讓...