我是靠谱客的博主 顺心鲜花,最近开发中收集的这篇文章主要介绍java从入门到放弃(二)代理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 一、概念
    • 二、静态代理
    • 三、JDK动态代理

一、概念

  代理,顾名思义,代你处理的意思。代理分为静态代理和动态代理,静态代理是在编译时就将接口、实现类、代理类一股脑儿全部手动完成,但如果我们需要很多的代理,每一个都这么手动的去创建实属浪费时间,而且会有大量的重复代码,此时我们就可以采用动态代理。动态代理可以在程序运行期间根据需要动态的创建代理类及其实例,来完成具体的功能。

二、静态代理

  静态代理是非常简单的模式了,可以通过如下代码先简单了解下。
先建立一个博主接口,告诉外界博主是可以做事的。

public interface Ranen {
public void canDo();
}

再来个实现,写一下自己可以做的事儿有哪些。

public class RanenImpl implements Ranen {
@Override public void canDo() {
System.out.println("我会写JAVA");
System.out.println("我会python");
System.out.println("我会c");
System.out.println("我会c#");
System.out.println("我会c++");
return;
}
}

接下来生成一个组长代理类,类需重写被代理的博主的canDo接口。

public class LeaderProxy implements Ranen{
Ranen ranen;
Unit(Ranen ranen){
this.ranen = ranen;
}
@Override public void canDo() {
ranen.canDo();
// 组长需要做的事情
return;
}
}

接下来生成一个客户来要人。

public class Customer {
public static void main(String args[]){
//定义一个博主
Ranen ranen = new Ranen();
//再来一个领导
Ranen proxy = new LeaderProxy(coder);
//让领导说能做点啥
proxy.canDo();
}
}

三、JDK动态代理

  作一个简单的比喻,假如你是明星,你有一个经纪人。有一天有一个公司来找你说让你去跨年演出,而你这个时候不知道演出前的合同等流程是怎么签署的,这个时候就用到了代理,也就是他们只需要找到你的经纪人(代理类)来处理就行了,前面的事情他会给你做好,等到演出的时候他唤你出来唱首歌就可以了。
  当然代理有好处也有坏处,好处就是可以在你演出的前后都由经纪人给你安排妥当,但是坏处就是会有效率上的损失,因为就他呼唤你出来这个操作也是需要占用资源的。
  废话不多说,直接上代码。

继承InvocationHandler接口实现自己的调用处理程序。

public class RanenInvocationHandler implements InvocationHandler {
Object object =new Object();
public RanenInvocationHandler(Object o){
object = o;
}
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("代理类方法开始");
Object o = method.invoke(object);
System.out.println("代理类方法结束");
return o;
}
}

测试主方法如下:

public class PeopleProxy {
public static void main(String[] args) {
// 直接调用
Ranen ranen = new RanenImpl();
ranen.canDo();
InvocationHandler invocationHandler = new RanenInvocationHandler(ranen);
Ranen ranen1 =((Ranen) Proxy.newProxyInstance(RanenImpl.class.getClassLoader(),
RanenImpl.class.getInterfaces(),invocationHandler));
// 代理调用
ranen1.canDo();
}
}

最后

以上就是顺心鲜花为你收集整理的java从入门到放弃(二)代理的全部内容,希望文章能够帮你解决java从入门到放弃(二)代理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部