首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态代理-JAVA成长之路

静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类.

下面举个案例来解释:

模拟修改动作,定义一个修改动作的接口:IPersonDao.java,然后目标对象实现这个接口的方法PersonDao.java,此时如果使用静态代理方式,就需要在代理对象(PersonDaoProxy.java)中也实现IPersonDao接口.调用的时候通过调用代理对象的方法来调用目标对象.

需要注意的是,代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法

代码示例:

接口:IPersonDao.java

public interface IPersonDao {

void update();

}

目标对象:PersonDao.java

public class PersonDao implements IPersonDao{

public void update() {

// TODO Auto-generated method stub

}

}

代理对象:PersonDaoProxy.java

public class PersonDaoProxy implements IPersonDao{

private IPersonDao target;

public PersonDaoProxy(IPersonDao target){

this.target = target;

}

@Override

public void update() {

}

}

测试类:App.java

public class App {

public static void main(String[] args){

PersonDao p = new PersonDao();

PersonDaoProxy pProxy = new PersonDaoProxy(p);

pProxy.update();

}

}

静态代理总结:

1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.

2.缺点:

因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

如何解决静态代理中的缺点呢?答案是可以使用动态代理方式

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200609A06RR600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com