1. 程式人生 > >代理模式和靜態代理詳解

代理模式和靜態代理詳解

代理模式:
1):什麼是代理模式:
         代理模式是GoF四人組提出的23中設計模式之一。(如果一個類T不想被另一個類C直接訪問,或者是這個類
在不修改自身原始碼的情況下,增強自己的功能,達到這種目的就可以使用代理模式,可以通過中間類P來完成需求。此時類P稱為代理類T被稱為目標類,C被稱為客戶類) 也就是說,客戶類C想要與目標類T發生聯絡,都需要代理類P來完成,即,客戶類只能和代理類發生直接的聯絡。如下圖:
2):代理模式中的角色:
             目標類
             客戶類
             代理類3):代理模式的目的:
             <1>為了保護或者隱藏一個類
             <2>在不修改原始碼的情況下,增強某個類的功能。
4):代理模式的分類:
 <1>根據代理類建立的時間的不同,或者說是代理關係確立的時間的不同分為,靜態代理和動態代理。
其中動態代理又根據實現的技術的不同分為若干類,我們常用的有JDK的Proxy,CGLIB動態代理,javassist動態代理。。。。
靜態代理
1>:什麼是靜態代理:
         如果代理模式中的代理類是由程式設計師手工編寫的,代理關係在程式執行之前就已經確立了,這種代理模式就是靜態代理。2>:使用靜態代理的要求:
         由於代理類是要代替嗎目標類來和客戶類發生聯絡,所以代理類的要保證具有目標類的全部功能,,為了達到這個要求,
我們一般是通過讓代理類和目標類實現相同的業務介面來進行約束的,也可一讓代理類和目標類繼承同一個父類,目標類中的物件稱為目標物件,代理類中的物件稱為是代理物件,目標類中的方法稱為目標方法,代理類中的方法稱為代理方法。3>:靜態代理的使用要求:
         代理類中應該含有目標類物件的引用,以便於代理方法中直接呼叫目標物件的目標方法。4>:靜態代理類的目標物件是在代理類中建立的,而不是由外部傳入的,這樣就就起到了保護和隱藏目標類的作用。

相關推薦

代理模式靜態代理

代理模式:1):什麼是代理模式:         代理模式是GoF四人組提出的23中設計模式之一。(如果一個類T不想被另一個類C直接訪問,或者是這個類在不修改自身原始碼的情況下,增強自己的功能,達到這種目的就可以使用代理模式,可以通過中間類P來完成需求。此時類P稱為代理類T被

(轉)動態代理模式靜態代理模式區別,動態代理底層實現原理

靜態代理 靜態代理在使用時,需要定義介面或者父類,被代理物件與代理物件一起實現相同的介面或者是繼承相同父類,程式碼如下 程式碼示例: 介面:IPersonDao.java public interface IPersonDao { void update();

java設定模式---代理模式--動態代理模式cglib代理模式

代理模式使用場景 代理模式的定義:什麼是代理模式呢?代理模式是常用的Java設計模式,它的特徵是代理類與委託類有同樣的介面,代理類主要負責為委託類預處理訊息、過濾訊息、把訊息轉發給委託類,以及事後處理消息等。代理類和委託類之間通常會存在關聯關係,一個代理類的物件與一個委託類的物件關聯,代理類的物

代理模式靜態代理動態代理

Java 靜態代理 靜態代理通常用於對原有業務邏輯的擴充。比如持有二方包的某個類,並呼叫了其中的某些方法。然後出於某種原因,比如記錄日誌、列印方法執行時間,但是又不好將這些邏輯寫入二方包的方法裡。所以可以建立一個代理類實現和二方方法相同的方法,通過讓代理類持有真實物件,然後在原始碼中呼叫代理類方法,

Java設計模式代理模式靜態代理動態代理

前言 代理模式分為靜態和動態。同時靜態代理又分為普通代理和強制代理。因此本文會通過示例的方式詳細介紹著三種代理模式。我們依然以網上購物為例。   普通代理 定義:要求客戶端只能訪問代理角色,而不能直接訪問真實角色。我們需要修改真實角色: 1 public class RealCon

動態代理模式(例項化

簡介 代理模式通常用於達到對原有系統功能進行擴充的目的 比如:你剛接手一個別人沒有完成的專案,這是你不想動別人原理的程式碼,還需要新增新功能。這時代理模式,這時代理模式,這時代理模式會很好的幫助解決問題 代理模式分為兩種: 靜態代理模式 、 動態代理模式 靜態代理 靜態代理一般是

帶你用例項學習代理模式靜態代理、動態代理(JDK、CGlib)以及區別優缺點

Spring AOP的核心技術就是動態代理,所以小編學習並整理了代理模式的材料,供大家一起學習。 1、代理模式滿足的三個必要條件: 兩個角色:執行者、被代理物件 這個過程必須要做,但是自己不能做或者不想做,交給專業的人(媒婆) 執行者必須拿到被代理物件的引用(需要知道你要什

Java代理模式實現與原理(一)

關於Java中的代理,我們首先需要了解的是一種常用的設計模式——代理模式,而對於代理,可根據代理類建立的時間點,分為靜態代理和動態代理。今天我們先來了解一下Java中的靜態代理。 1 代理模式 代理模式是一種常用的設計模式,百度百科中對其定義為:為其他物件提供一個代理以控制對某個物件的訪問。

設計模式代理模式 c++實現以及

proxy模式 <1> 作用:為其他物件提供一種代理以控制對這個物件的訪問。 <2> 代理模式的應用場景:如果已有的方法在使用的時候需要對原有的方法進行改進,此時有兩種辦法:1、修改原有的方法來適應。這樣違反了“對擴充套件開放,對修改關閉”的原則。2

設計模式與應用:代理模式(三種

簡介 Proxy代理模式,是構造型的設計模式之一 代理模式為其他物件提供代理以控制這個物件的訪問。 所謂代理,是指具有與代理元(被代理物件)具有相同介面的類。client需要通過代理與被代理的目標類互動,代理類就是在互動的過程中(前後

java設計模式--代理模式靜態代理動態代理

完全拷貝,有些地方修改了一下 1、動態代理(Dynamic Proxy)   代理分為靜態代理和動態代理,靜態代理是在編譯時就將介面、實現類、代理類一股腦兒全部手動完成,但如果我們需要很多的代理,每一個都這麼手動的去建立實屬浪費時間,而且會有大量的重複程

代理模式靜態代理,JDK動態代理cglib動態代理

代理模式,顧名思義,就是通過代理去完成某些功能。比如,你需要購買火車票,不想跑那麼遠到火車站售票視窗買,可以去附近的火車票代售點買,或者到攜程等第三方網站買。這個時候,我們就把火車站叫做目標物件或者委託物件,也可以叫被代理物件,而火車票代售點和攜程就叫做代理物件。 一、靜態代理 靜態代理是最簡單的代理模式。需

【設計模式代理模式靜態代理,動態代理,spring aop

spring 實現接口 找到 master 代碼 -s result java 統一 代理模式分為靜態代理和動態代理。我們拿鏈家來舉例子,我們本人是真實的對象,有真實的業務需求:需要去找房子;鏈家是中介,是代理類,他來幫我執行找房子的這個操作。 靜態代理:   1.實現一個

java 代理模式靜態代理、動態代理、Cglib代理) 轉載

cas 代理人 缺點 intercept 必須 lan itcast 技術 有時 Java的三種代理模式 1.代理模式 代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;即通過代理對象訪問目標對象.這樣做的好處是:可以在目標對象實現的基礎上,增強額外的功能操

代理模式靜態代理

system rri host after int 授權 @param () 說明 package edu.aeon.proxy; /** * 說明:靜態代理 角色:真實角色、代理角色 條件:兩種覺得必須實現同一接口 例子:1.北京找房(中介) 2.結婚(找婚慶公司)

代理模式_靜態代理

在閻巨集博士的《JAVA與模式》一書中開頭是這樣描述代理(Proxy)模式的:   代理模式是物件的結構模式。代理模式給某一個物件提供一個代理物件,並由代理物件控制對原物件的引用。 代理模式的結構   所謂代理,就是一個人或者機構代表另一個人或者機構採取行動。在一些情況下,一個客戶不

java的三種代理模式靜態代理,動態代理,cglib代理

原文:https://segmentfault.com/a/1190000011291179 一、代理模式介紹 代理模式是一種設計模式,提供了對目標物件額外的訪問方式,即通過代理物件訪問目標物件,這樣可以在不修改原目標物件的前提下,提供額外的功能操作,擴充套件目標物件的功能。 簡言之,代

代理模式靜態代理模式

特點: 兩個子類共同實現一個介面,其中一個子類負責真實的業務實現,另外一個子類完成輔助真實業務主題的操作。 interface ISubject { public void buyLipstick();// 核心功能是買口紅 } class RelSubject imple

設計模式學習之代理模式靜態代理

設計模式學習之代理模式之靜態代理 前言 程式碼 執行結果 前言 最近發現設計模式都忘記的七七八八了,打算一邊寫一下部落格,一邊溫習一下設計模式,這裡因為最近寫了一下框架,模擬一下mybatis的代理方式 程式碼

java代理模式動態代理

1.代理模式 為什麼使用代理模式? 當處理實際的業務邏輯之前或者之後,想要處理一些別的事。比如吃飯是我真實要做的事情,但是在吃飯之前我必須要做飯,之後必須要洗碗。 做飯洗碗可以讓別人代做。 吃飯介面 package com.wch.api; public i