Proxy模式與Decorator模式的區別

2021-08-29 08:31:20 字數 936 閱讀 8587

proxy模式和decorator模式都是處理兩個類的關係,所不同的是兩者關係在何時被建立,英文意思說:proxy模式是在編譯時建立關係;而decorator模式則可以在執行時構建。

如果我沒有理解錯的話:老外檢視從編譯或執行兩者語言狀態來描述兩者區別,我不敢苟同。

我個人認為:應該從業務應用場景來看待兩者區別,而不是拘泥於類關係的如何實現上,不同模式區別都是因為關注點不同,proxy模式關注的**兩個字,是類的**,也就是乙個類的整體**,乙個原始類可能有多個方法,使用**類,就要盡量對原始類大部分方法從同乙個功能觸發進行**,比如許可權**,進而可以發展到動態**以及aop。

而decorator則側重於增加職責,至於為乙個類多個方法增加的職責是否統一不是其關心的,可能不同方法不同職責。

proxy只是對現在功能作了**,而decorator不是對現在功能**,是新增新的功能

相對於decorator而言,通常proxy是更重量級的。proxy和bridge模式也有很多相似之處:透過乙個介面去訪問真正實現功能的物件。decorator和proxy的區別在於,decorator目標僅僅在於增加某些方法的職責,並不打算全面掌控目標物件,另外,decorator也並不確定自己將要修飾的可能會是什麼物件。proxy模式則相反,proxy需要全面了解甚至需要構建被**物件,而proxy和被**物件之間的關係也是靜態決定的。有一點是相同的:乙個實際物件既可以有多個decorator,也可以有多個proxy。

proxy和bridge雖然有相似性,但是bridge的目的僅僅是為了維持介面和實現的各自演化,bridge模式並不打算用來支援建立非常複雜的實現。bridge模式的介面和實現在語意上是完全一致的。而proxy模式,雖然一般而言proxy和被**物件之間具備一致的介面,但這完全是不必要的。當弱化proxy的額外處理能力,強化decorator的職責範圍,這三個模式之間的實現區別將會不那麼顯著,我們需要警惕的是,這三者之間的意圖則是差別非常巨大的。

設計模式 Proxy模式

作用 為其他物件提供一種 以控制對這個物件的訪問。uml結構圖 抽象基類 1 subject 定義了proxy和realsubject的公有介面,這樣就可以在任何需要使用到realsubject的地方都使用proxy.解析 proxy其實是基於這樣一種時常使用到的技術 某個物件直到它真正被使用到的時...

設計模式 Proxy模式

模式 1 什麼是 模式?模式 proxy 為其他物件提供一種 以控制對這個物件的訪問。dp 通俗的說就是指客戶端並不直接呼叫實際的物件,而是通過 物件,來間接呼叫實際的物件。2 實現原理 subject 可以是介面,也可以是抽象類 proxy 內部含有對真實物件realsubject的引用,負責對真...

設計模式之Proxy模式

proxy 模式給某乙個物件提供乙個 並由 物件控制對原物件的引用。模式的英文叫做proxy或surrogate,中文都可譯成 所謂 就是乙個人或者乙個機構代表另乙個人或者另乙個機構採取行動。在一些情況下,乙個客戶不想或者不能夠直接引用乙個物件,而 物件可以在客戶端和目標物件之間起到中介的作用。如果...