什么是代理模式?
一个类对另一个类的访问进行访问控制。方法调用方对代理类对象访问来获取实际的方法服务。
什么是静态代理模式?
针对某个类的某个方法,创建对应的代理类进行访问控制。
哪些对象实例需要访问控制?
- 需要远程访问的对象
- 创建开销很大的对象
- 需要提供安全控制的对象
静态代理模式依赖及访问控制流程图是什么样子的?
类间依赖:

数据访问流程图:

具体实现:
服务接口:
package Proxy; public interface Service { void invokeMethod(String param); }
服务实现类:
package Proxy; public class ServiceImpl implements Service { @Override public void invokeMethod(String param) { System.out.println("param: " + param); } }
代理类(拥有服务实现类的实例,对实例的方法访问进行访问控制):
package Proxy; public class StaticProxy implements Service { Service realService; public StaticProxy(Service service) { this.realService = service; } @Override public void invokeMethod(String param) { beforeInvoke(); realService.invokeMethod(param); afterInvoke(); } private void beforeInvoke() { System.out.println("opening source..."); } private void afterInvoke() { System.out.println("closing source..."); } }
调用方:
public static void main(String[] args) { Service realService = new ServiceImpl(); Service proxy = new StaticProxy(realService); //方法请求 proxy.invokeMethod("Integer(10)"); }
缺点:
对于代理同一个类,只要新增了一种新的代理方法,就需要创建一个新类去作为代理类。
对于使用相同代理机制去代理不同的类,每新增一个新的服务类,也需要创建一个新的类去作为代理类。
导致代理类数量急剧上升。
本文介绍了代理模式的概念,并详细解析了静态代理模式的工作原理及其应用场景。通过具体的Java代码示例,展示了如何实现静态代理并控制对目标对象方法的访问。

被折叠的 条评论
为什么被折叠?



