静态代理模式的理解


链接:https://www.zhihu.com/question/20794107/answer/23330381

来源:代码来源于知乎回答者

静态代理是在方法级别上的代理,所以静态代理的缺点就是如果一个类的方法很多,而且都需要做静态代理的话,那么久需要创建很多的代理类,占用很大的资源那么我们可能会问:为什么不能在一个代理类里面写所有这些需要代理的方法呢?

答:如果是那样,为什么还需要代理呢,直接用委托类(原来需要被代理的类)不就行了吗

原因是这样的:因为既然一个类中的方法需要代理,那么就肯定有这个方法与其他方法的不同之处,也许是需要对这个方法上的业务做一个特殊处理,比如给这个方法增加一些功能,如果把所有需要代理的方法放到同一个代理类里面去代理,那么就会造成业务逻辑的混乱,另外一点,假如创建了该代理类的一个对象,则该对象可以同时操作代理类里面所有的被代理的方法,这样的代理类我想也是无异于原来的委托类

总之:一个方法如果需要被代理,可以肯定该方法一定有一定的原因,而且这个原因还是该方法所独有的


package test;

public interface Subject   
{   
  public void doSomething();   
}

package test;

public class RealSubject implements Subject   
{   
  public void doSomething()   
  {   
    System.out.println( "call doSomething()" );   
  }   
}  

package test;

public class SubjectProxy implements Subject
{
  Subject subimpl = new RealSubject();
  public void doSomething()
  {
     subimpl.doSomething();
  }
}

package test;

public class TestProxy 
{
   public static void main(String args[])
   {
       Subject sub = new SubjectProxy();
       sub.doSomething();
   }
}


我如同这个代码的作者一样,感觉代理类的创建纯属多余,一直都没有实际的业务来对比理解,现在总算明白了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micrle_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值