【java】静态代理

    xiaoxiao2021-03-25  19

    作者:雨夜偷牛的人 链接: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(); } }

    刚开始我会觉得SubjectProxy定义出来纯属多余,直接实例化实现类完成操作不就结了吗?后来随着业务庞大,你就会知道,实现proxy类对真实类的封装对于粒度的控制有着重要的意义。但是静态代理这个模式本身有个大问题,如果类方法数量越来越多的时候,代理类的代码量是十分庞大的。

    自己的话:静态代理可以灵活地扩展某一个类中的方法。他的优势在于简单易行的对方法进行拓展而不需要变动原有代码。但问题就是静态代理只能拓展一个类,若需要拓展的数量较多,这种方法就会导致拓展代码量也巨大。

    转载请注明原文地址: https://ju.6miu.com/read-300118.html

    最新回复(0)