[英]What is the exact difference between 'Adapter' and 'Mediator" patterns?
[英]What is the exact difference between Adapter and Proxy patterns?
據我了解,適配器和代理模式都使兩個不同/不同的類/對象彼此兼容以進行通信。 它們都是結構模式。 我發現他們兩個彼此非常相似。
有人能解釋一下究竟是什么讓它們與眾不同嗎?
編輯:我經歷了這個問題。 但我更願意對 Adapter 和 Proxy 進行仔細比較。
適配器:
UML圖:
您可以通過此SE帖子中的工作代碼示例找到有關此模式的更多詳細信息:
代理:
代理為另一個對象提供代理或占位符以控制對它的訪問。
UML圖:
存在代理模式適用的常見情況。
有關工作代碼,請查看有關Proxy的tutorialspoint文章。
主要差異:
您可以在代理和適配器文章的sourcemaking文章中找到有關這些模式的更多詳細信息。
其他有用的文章:dzone 代理
從這里 :
適配器為其主題提供不同的界面。 代理提供相同的接口。
您可能會認為適配器應該使一件事適合另一件適合的,如果直接連接則不兼容。 例如,當您出國旅行時,需要一個電源插座適配器。
現在,Proxy是同一接口的對象,可能是相同的基類(或子類)。 它只是“假裝”成為(並且表現得像)實際對象,而是將實際行為(計算,處理,數據訪問等)轉發給底層的引用對象。
根據電氣類比推斷,客戶端可以看到適配器的使用 - 也就是說,客戶端“知道”正在使用適配器 - 而代理的使用可能更常被隱藏,或者“透明“ - 客戶端認為正在使用實際對象,但它只是一個代理。
在實踐中,包裝器、適配器和代理的概念是如此密切相關,以至於這些術語可以互換使用。
顧名思義,包裝器實際上是圍繞另一個 object 或 function 的東西。例如,調用另一個 function 的 function,或管理另一個 object 的生命周期並轉發請求和轉發響應的 object。
適配器從字面上適應合同。 這通常是指更改 object 的接口,或更改方法簽名。 在這兩種情況下,這只能通過用不同的 object 或 function 包裝來實現。
代理這個詞用於完全相同的事情。 但是,一些來源會更明確地使用它來引用適配器來訪問遠程資源。 基本上,這意味着本地呼叫將被轉發到遠程 object 。 定義一個公共接口似乎很自然,然后可以在本地和遠程為這些對象共享/重用。
注意:代理模式的后一種解釋不再是真正的東西了。 這種方法在CORBA等技術炙手可熱的時代是有意義的。 如果您要訪問遠程服務,那么明確定義請求、響應和上下文對象並使用 OpenAPI 或 XSD 等技術會更有意義。
適配器模式和代理模式之間的區別
適配器模式
代理模式
了解通過代碼
class client{
public void main(){
//proxy pattern
IServer iserver = new proxy();
iserver.invoke();
//adapter pattern
IAdapter iadapter = new adapter();
iserver.iadapter();
}
}
class server implements IServer{
public void invoke(){}
}
class proxy implments IServer{
public void invoke(){}
}
class adapter implements IAdapter{
public void invoke(){}
}
參考: 適配器模式和代理模式之間的區別
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.