1. 程式人生 > >設計模式之裝飾模式和代理模式區別與聯絡

設計模式之裝飾模式和代理模式區別與聯絡

一.你在一個地方寫裝飾,大家就知道這是在增加功能,你寫代理,大家就知道是在限制
     1.最常見的代理就是許可權判斷了,許可權就肯定是限制了
     2.裝飾模式是指增強被包裝物件的功能
       代理模式是修改被代理物件的行為
     3.例子:
       1.裝飾模式:對被裝飾的物件增加額外的職責,滿足里氏代換原則(子類可以代替父類)
         如:杯子生產線,杯子必須可以裝水,在生產線上可以給杯子塗顏色,加杯蓋,
但要保證杯子可以裝水。
       2.代理模式:對被代理的物件提供訪問控制。
       如:客戶訂購商品,可以直接從廠家訂購,也可以從網上商城訂購,網上商城是廠家
       的代理,從網上商城訂購商品,商城可以對商品進行控制,不交錢不給商品,人不在
       不給商品,也可以贈送你額外的禮品,代金券。
     4.例子二:
       舉個例子  A類是原始功能的類, B是裝飾模式中對A類的擴充套件之後的類, C是代理模式中對A類的擴充套件
       對於使用者呼叫來說。 
       使用裝飾模式, 使用者更關係的是B的功能(包含A的原始功能)。
       使用代理模式,使用者更關心A的功能。並不關係(c的功能)。
       
     我思所得:當要擴充套件一個類的功能時,用裝飾,如果要對原有的方法進行改進,則用代理
              這就是真理呀,就像前面關閉資料庫的那個close()功能,它也是把這個功能
     改為結束利用,將連線還給連線池。(厲害,可以的)

相關推薦

跟我學程式碼架構設計模式--切面思想代理模式

最近比較忙,文章只寫要點,具體細節擴充套件請自行蒐集資料。 一 、要解決的問題 java面向物件設計裡面,最初只考慮了類和類繼承這一層縱向關係:越公共越通用的方法都在父類裡面,越具體的方法都在子類裡面。在某一個系統裡面一般會有許許多多的類繼承體系關係,比如人員管理系統中會有人員繼承體系、

設計模式裝飾(Decorator)模式

isp 撤銷 有一個 inf 替代 接受 需要 裝飾著模式 () 設計模式之裝飾(Decorator)模式 (一)什麽是裝飾(Decorator)模式   裝飾模式,又稱為包裝模式,它以對客戶端透明的方式擴張對象的功能,是繼承關系的替代方案之一。  裝飾模式可以在不使用創造

23種設計模式(六)代理模式(python_c++實現)

23種設計模式之(六)代理模式(Proxy) 本文主要介紹23種設計模式之原型模式,附詳細python/c++示例程式碼。 - 概念 - 應用場景 - 注意事項 - 程式碼示例 - 總結 - 程式碼連結 代理模式(Proxy) 概念

裝飾模型代理模式區別

1、裝飾模式關注的是對一個物件動態的新增方法,即增加物件的功能。 2、代理模式關於控制物件的訪問。 3、代理模式中可以對客戶隱藏物件的具體資訊,因此在使用代理模式的時候,我們通常在代理類中建立一個例項。 4、裝飾模式通常的做法是將原始物件作為一個引數傳遞給裝飾者的構造器。

7設計模式 觀察者 監聽器的區別

GOF設計模式中有一種叫做觀察者模式(Observer),屬於行為型模式。又叫釋出-訂閱(Publish/Subscribe)模式、模型-檢視 (Model/View)模式、源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。觀察者模式定義

Java設計模式十二(代理模式

一、什麼是代理模式 Proxy模式又叫做代理模式,是構造型的設計模式之一,它可以為其他物件提供一種代理(Proxy)以控制對這個物件的訪問。 所謂代理,是指具有與代理元(被代理的物件)具有相同的介面的類,客戶端必須通過代理與被代理的目標類互動,而代理一般在互動的過程中(互

OpenJDKSun/OracleJDK 區別 聯絡

首先要先明確之間,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等專案之間是什麼關係,這有助於確定接下來編譯要使用的JDK版本和原始碼分支。 從前面介紹的Java發展史中我們瞭解到OpenJDK是Sun在2006年末把Java開源而形成的專案,這裡的

python3的evalexec的區別聯絡

eval:  可以把字串裡的字元轉換為可執行程式碼,但只支援一行字元。可以返回執行後得到的值。如下: f = "3+6+9+8" s = eval(f) print(s) 輸出: "C:\Program Files\python3\python3.exe" D:/co

pandas中Series()DataFrame()的區別聯絡

區別: series,只是一個一維資料結構,它由index和value組成。 dataframe,是一個二維結構,除了擁有index和value之外,還擁有column。 聯絡: dataframe由多個series組成,無論是行還是列,單獨拆分出來都是一個series。 程式碼演示:

簡述COOKIESESSION的區別聯絡

cookie 和session 的區別:1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。2、cookie不是很安全,別人可以分析存放在本地的COOKIE並進行COOKIE欺騙,考慮到安全應當使用session。3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較佔用你伺

web伺服器、應用伺服器、web容器、反向代理伺服器區別聯絡

Web伺服器工作原理 HTTP協議基於TCP協議上,是一個應用層協議,用於使用者代理和Web伺服器進行通訊。Web伺服器通常採用一問一答的方式進行工作: 在使用者代理上使用者發起資源請求,請求內容包括但不限於:指定資源的唯一標識URI,指明動作型別(GET/POS

詳談getpost的區別聯絡

Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為:一個URL地址,它用於描述一個網路上的資源,而HTTP中的GET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概

golang中陣列切片的區別聯絡

golang中陣列和切片的區別: 切片時指標型別,陣列是值型別 陣列的長度是固定的,而切片不是(切片是動態的陣列) 切片比陣列多一個屬性:容量(cap) 切片的底層是陣列 既然一個是指標型別,一個是

SessionCookie的區別聯絡

一、會話的概念    會話就好比打電話,一次通話可以理解為一次會話。我們登入一個網站,在一個網站上不同的頁面瀏覽,最後退出這個網站,也是一個會話。一個網站對於不同的使用者會展示出不同的頁面資訊,但是在HTTP協議中,客戶端請求服務端是一種無狀態的連線-每次請求都

C++指標引用的區別聯絡

1.指標和引用的定義和性質區別: (1)指標是一個變數,只不過這個變數儲存的是一個地址,指向記憶體的一個儲存單元;     而引用跟原來的變數實質上是同一個東西,只不過是原變數的一個別名而已。 (2)可以有const指標,常量指標可以改變指向,指標常量

微處理器微控制器的區別聯絡

微處理器 (MPU) 微處理器由一片或少數幾片大規模整合電路組成的中央處理器。這些電路執行控制部件和算術邏輯部件的功能。 微處理器能完成取指令、執行指令,以及與外界儲存器和邏輯部件交換資訊等操作,是微型計算機的運算控制部分。它可與儲存器和外圍電路晶片組成微型計算機。

python3 中的 urllib模組python2的區別聯絡

3.0版本中已經將urllib2、urlparse、和robotparser併入了urllib中,並且修改urllib模組,其中包含5個子模組,即是help()中看到的那五個名字。 為了今後使用方便,在此將每個包中包含的方法列舉如下: urllib.error:

485、CAN乙太網的區別聯絡

轉自:CSDN,https://blog.csdn.net/xtydtc/article/details/71170326 主要考慮的是兩方面問題,485和CAN的成本和速度。 匯流排型別 速度 特點 485

hashtable hashmap的區別聯絡

1、相同點:兩者都是對於介面java.util.Map的實現類;都是用來儲存健值的資料結構。 2、區別: (1)hashmap允許鍵值為空(key=null),但最多值允許一條記錄的簡直為空。hashtable不允許。 (2)hashmap不支援執行緒同步,不是執行緒安全

Web伺服器、應用伺服器、Web容器、反向代理伺服器區別聯絡[轉]

我們知道,不同膚色的人外貌差別很大,而雙胞胎的辨識很難。有意思的是Web伺服器/Web容器/Web應用程式伺服器/反向代理有點像四胞胎,在網路上經常一起出現。本文將帶讀者對這四個相似概念如何區分。 一文看懂web伺服器、應用伺服器、web容器、反向代理伺服器區