成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

動(dòng)態(tài)代理

FWHeart / 2556人閱讀

摘要:定義代理設(shè)計(jì)模式為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。動(dòng)態(tài)代理代理類(lèi)在程序運(yùn)行時(shí)創(chuàng)建的代理方式被成為動(dòng)態(tài)代理。

1.定義

代理設(shè)計(jì)模式:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。
動(dòng)態(tài)代理:代理類(lèi)在程序運(yùn)行時(shí)創(chuàng)建的代理方式被成為 動(dòng)態(tài)代理。代理類(lèi)并不是在Java代碼中定義的,而而是在運(yùn)行時(shí)根據(jù)我們?cè)贘ava代碼中的“指示”動(dòng)態(tài)生成的

2.簡(jiǎn)介

Sping mvc的Aop就是基于動(dòng)態(tài)代理實(shí)現(xiàn)的,通過(guò)它我們可以很方便的進(jìn)行日志記錄,性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等,而不用更改業(yè)務(wù)邏輯

3.類(lèi)圖

image.png
4.實(shí)例

package designMode;

import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**

代理設(shè)計(jì)模式:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。

動(dòng)態(tài)代理:代理類(lèi)在程序運(yùn)行時(shí)創(chuàng)建的代理方式被成為 動(dòng)態(tài)代理。代理類(lèi)并不是在Java代碼中定義的,而是在運(yùn)行時(shí)根據(jù)我們?cè)贘ava代碼中的“指示”動(dòng)態(tài)生成的
*/

public class ProxyPattern {

public static void main(String[] args) throws IOException {
    Aop aop1 = new Aop();
    Subject subject = (Subject) new AopHandler().bind(aop1);
    subject.doSometing();

}
/**
 * 接口Subject
 */
interface Subject {
    void doSometing();
}
/**
 * 要代理的對(duì)象(RealSubject)
 */
static class Aop implements Subject {
    @Override
    public void doSometing() {
        System.out.println("保存數(shù)據(jù)....");
    }
}
/**
 * 代理類(lèi)(InvocationHandler )
 */
public static class AopHandler implements InvocationHandler {
    private Object delegate;

    //運(yùn)行時(shí)創(chuàng)建代理類(lèi)
    public Object bind(Object delegate) {
        this.delegate = delegate;
        return Proxy.newProxyInstance(
                this.delegate.getClass().getClassLoader(), this.delegate.getClass().getInterfaces(), this
        );
    }
    //動(dòng)態(tài)代理可以很方便的面向切面編程
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("開(kāi)啟事務(wù)...");
        method.invoke(delegate);
        System.out.println("提交事務(wù)...");
        return null;

    }
}

}

歡迎加入學(xué)習(xí)交流群569772982,大家一起學(xué)習(xí)交流。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67764.html

相關(guān)文章

  • Java中的動(dòng)態(tài)代理

    摘要:要明白,動(dòng)態(tài)代理類(lèi)的存在意義是為了攔截方法并修改邏輯而動(dòng)態(tài)代理的局限性之一就是只能攔截接口所聲明的方法。因?yàn)閯?dòng)態(tài)代理類(lèi)是繼承自業(yè)務(wù)類(lèi),所以該類(lèi)和方法不能聲明成無(wú)法繼承或重寫(xiě)。者最終都是生成了一個(gè)新的動(dòng)態(tài)代理類(lèi)對(duì)象。 動(dòng)態(tài)代理 1、先談靜態(tài)代理 對(duì)于靜態(tài)代理,我們已經(jīng)很熟悉了。我們擁有一個(gè)抽象類(lèi),真實(shí)類(lèi)繼承自抽象類(lèi)并重寫(xiě)其業(yè)務(wù)方法,代理類(lèi)持有真實(shí)類(lèi)的對(duì)象實(shí)例,在重寫(xiě)業(yè)務(wù)方法中通過(guò)調(diào)用真實(shí)...

    CastlePeaK 評(píng)論0 收藏0
  • java動(dòng)態(tài)代理及RPC框架介紹

    摘要:這種語(yǔ)法,在中被稱(chēng)為動(dòng)態(tài)代理。在動(dòng)態(tài)代理機(jī)制中,這個(gè)角色只能是接口。動(dòng)態(tài)代理就是實(shí)現(xiàn)的技術(shù)之一。 所謂動(dòng)態(tài)代理,指的是語(yǔ)言提供的一種語(yǔ)法,能夠?qū)?duì)對(duì)象中不同方法的調(diào)用重定向到一個(gè)統(tǒng)一的處理函數(shù)中來(lái)。python重寫(xiě)__getattr__函數(shù)能夠做到這一點(diǎn),就連世界上最好的語(yǔ)言也提供稱(chēng)為魔術(shù)方法的__call。這種語(yǔ)法除了能更好的實(shí)現(xiàn)動(dòng)態(tài)代理外,還是RPC框架實(shí)現(xiàn)原理的一部分。 動(dòng)態(tài)代理...

    2shou 評(píng)論0 收藏0
  • Java三種代理模式:靜態(tài)代理動(dòng)態(tài)代理和cglib代理

    摘要:動(dòng)態(tài)代理又被稱(chēng)為代理或接口代理。靜態(tài)代理在編譯時(shí)產(chǎn)生字節(jié)碼文件,可以直接使用,效率高。代理無(wú)需實(shí)現(xiàn)接口,通過(guò)生成類(lèi)字節(jié)碼實(shí)現(xiàn)代理,比反射稍快,不存在性能問(wèn)題,但會(huì)繼承目標(biāo)對(duì)象,需要重寫(xiě)方法,所以目標(biāo)對(duì)象不能為類(lèi)。 一、代理模式介紹 代理模式是一種設(shè)計(jì)模式,提供了對(duì)目標(biāo)對(duì)象額外的訪問(wèn)方式,即通過(guò)代理對(duì)象訪問(wèn)目標(biāo)對(duì)象,這樣可以在不修改原目標(biāo)對(duì)象的前提下,提供額外的功能操作,擴(kuò)展目標(biāo)對(duì)象的功...

    Kaede 評(píng)論0 收藏0
  • JDK動(dòng)態(tài)代理的理解與分析

    摘要:類(lèi)所實(shí)現(xiàn)的方法包裝了對(duì)被代理對(duì)象的反射調(diào)用,后文中的動(dòng)態(tài)代理類(lèi)正是調(diào)用此方法來(lái)調(diào)用被代理對(duì)象的方法。 前言 java的設(shè)計(jì)模式中有一項(xiàng)設(shè)計(jì)模式叫做代理模式,所謂代理模式,就是通過(guò)代理方來(lái)操作目標(biāo)對(duì)象,而不是自己直接調(diào)用。代理又分為靜態(tài)代理和動(dòng)態(tài)代理,靜態(tài)代理就是針對(duì)每個(gè)被代理對(duì)象寫(xiě)一個(gè)代理類(lèi),操作不夠優(yōu)雅;動(dòng)態(tài)代理,可以根據(jù)接口動(dòng)態(tài)的生成代理類(lèi),這動(dòng)態(tài)生成的類(lèi)不需要自己書(shū)寫(xiě),jdk幫你...

    stormjun 評(píng)論0 收藏0
  • Java 動(dòng)態(tài)代理(Dynamic proxy) 小結(jié)

    摘要:代理模式基本概念不論是靜態(tài)代理還是動(dòng)態(tài)代理其本質(zhì)都是代理模式的一種實(shí)現(xiàn)那么什么是代理模式呢代理模式即給某一個(gè)對(duì)象提供一個(gè)代理并由代理對(duì)象控制對(duì)原對(duì)象的引用代理模式其實(shí)取材于實(shí)際生活例如我們生活中常見(jiàn)的房屋租賃代理我們?cè)谧夥繒r(shí)一般不是直接和房 代理模式 基本概念 不論是靜態(tài)代理還是動(dòng)態(tài)代理, 其本質(zhì)都是代理模式的一種實(shí)現(xiàn), 那么什么是代理模式呢?代理模式, 即給某一個(gè)對(duì)象提供一個(gè)代理, ...

    Jason 評(píng)論0 收藏0
  • Java代理設(shè)計(jì)模式(Proxy)的四種具體實(shí)現(xiàn):靜態(tài)代理動(dòng)態(tài)代理

    摘要:除了和外,我們還有最后一招我直接把一個(gè)代理類(lèi)的源代碼用字符串拼出來(lái),然后基于這個(gè)字符串調(diào)用的編譯期,動(dòng)態(tài)的創(chuàng)建一個(gè)新的文件,然后動(dòng)態(tài)編譯這個(gè)文件,這樣也能得到一個(gè)新的代理類(lèi)。 面試問(wèn)題:Java里的代理設(shè)計(jì)模式(Proxy Design Pattern)一共有幾種實(shí)現(xiàn)方式?這個(gè)題目很像孔乙己?jiǎn)栜钕愣沟能钭钟心膸追N寫(xiě)法? showImg(https://segmentfault.com/...

    gclove 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<