当前位置:首页 > CN2资讯 > 正文内容

动态代理---例子

3天前CN2资讯


动态代理类的实例

interface Subject {

void action();
}

// 被代理类

class RealSubject implements Subject {

@Override
public void action() {
System.out.println("我是被代理类,记得要执行我哦!么么~~");
}

}

class MyInvocationHandler implements InvocationHandler {

// 实现了接口的被代理类的对象的声明
Object obj;

// ①给被代理类的对象实例化 ②返回一个代理类的对象
public Object blind(Object obj) {
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this);
}


//当通过代理类的对象发起对被重写的方法的调用时,都会转化为对如下的invoke方法的调用
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

Object returnval = method.invoke(obj, args);
return returnval;
}

}

public class TestProxy {

public static void main(String[] args) {

//1.被代理类的对象
RealSubject real = new RealSubject();
//2.创建一个实现了InvocationHandler接口的类的对象
MyInvocationHandler handler = new MyInvocationHandler();

//调用blind()方法,动态的返回一个同样实现了real所在类实现的接口Subject的代理类的对象
Object obj = handler.blind(real);
//此时的sub就是代理类的对象
Subject sub = (Subject) obj;

sub.action();//转到对InvocationHandler接口的实现类的invoke()方法来调用



//再举一例

//通过调用静态代理类来说明此方法时懂爱的

NikeClothFactory nike = new NikeClothFactory();
//proxyCloth即为代理类的对象
ClothFactory proxyCloth = (ClothFactory) handler.blind(nike);
proxyCloth.productCloth();
}
}

静态代理类:

package proxy;


/**
*静态代理模式
*接口
*/
interface ClothFactory{

void productCloth();
}

//被代理类
class NikeClothFactory implements ClothFactory{

@Override
public void productCloth() {
System.out.println("Nike工厂生产一批衣服");
}

}


//代理类
class ProxyFactory implements ClothFactory{

ClothFactory cf;
//创建代理类的对象时,实际传入一个被代理类的对象
public ProxyFactory(ClothFactory cf){
= cf;
}

@Override
public void productCloth() {
System.out.println("代理类开始执行,收代理费$1000");
cf.productCloth();
}

}


public class TestClothProduct {

public static void main(String[] args) {

//创建被代理类的对象
NikeClothFactory nike = new NikeClothFactory();

//创建代理类的对象
ProxyFactory proxy = new ProxyFactory(nike);
proxy.productCloth();
}

}


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24449.html

    分享给朋友:

    “动态代理---例子” 的相关文章

    中国电信CN2网络费用高吗?一张卡的价格及优势解析

    在如今这个高度互联的时代,稳定的网络连接已经成为不可或缺的重要需求。无论是商务人士出差在外,还是留学生在海外学习,亦或是企业需要在全球范围内进行数据传输,一张高速、稳定的网络卡都是必不可少的工具。而中国电信的CN2网络,作为国内知名运营商的拳头产品,凭借其覆盖范围广、速率快、稳定性强的特点,成为众多...

    中国电信CN2线路连接方法视频讲解

    在当今互联网高速发展的时代,网络质量直接影响着我们的工作和生活体验。作为国内领先的通信运营商,中国电信推出的CN2专线以其高速、稳定、低延迟的特点,受到了广大用户的青睐。无论是企业用户还是普通家庭用户,CN2线路都能提供优质的网络连接服务。对于很多用户来说,如何正确连接和使用CN2线路依然是一个技术...

    Wikihost:构建高效知识库的理想WordPress主题

    Wikihost是一个专为WordPress平台设计的知识库主题,目的在于帮助用户轻松创建和管理知识库文章与文档页面。这款主题适合各种类型的网站,从小型企业到大型社区,用户都能通过它建立富有信息性的页面。Wikihost给用户提供了一整套便捷的功能,帮助他们分享知识和信息。 我发现Wikihost的...

    宝塔的设计概念与历史发展:信仰与文化的桥梁

    宝塔的设计概念 宝塔,这一宗教建筑的象征,体现了深厚的文化内涵和独特的美学设计。作为佛教的重要象征,宝塔的设计概念不仅包括其结构和形态的美感,也涵盖了宗教信仰的意义。最初的宝塔设计如同一个倒扣的钵盂,象征着对佛教教义的恭敬与追思。随着时间的推移,宝塔的构造和装饰逐渐演变,形成了今天我们所见的多样化风...

    LeaseWeb旧金山数据中心:为企业提供高效IT基础设施解决方案

    在谈到全球范围内的IT基础设施解决方案时,LeaseWeb无疑是一个重要的名字。成立于荷兰的LeaseWeb,凭借其卓越的服务和强大的网络能力,已经发展成为一家全球性的科技公司。它不仅提供传统的独立服务器服务,还涵盖了云计算、服务器托管等多样化的解决方案。对我而言,LeaseWeb就像是一座桥梁,连...

    Zolerani云服务器评测与市场分析:高性价比的选择

    Zolerani是一个充满活力的云服务器品牌,属于葡萄牙的HLISTAN ZOLERANI, UNIPESSOAL LDA公司旗下。最近,我对这个品牌进行了深入的研究,发现它在全球VPS云服务器市场上取得了显著的发展。Digitalcloud是Zolerani的主打品牌,于2023年2月正式成立,专...