代理模式
代理模式(Proxy Pattern) :给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。
代理模式包含三个角色:
抽象主题角色(Subject):通过接口或抽象类声明真实角色实现的业务方法。
代理主题角色(Proxy):实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实主题角色(RealSubject):实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
基本代码实现:
1、接口类:
public interface ISubject { void Method(); void Function(); }
2、真实主题角色
public class RealSubject implements ISubject{ @Override public void Method() { System.out.println("真实实现方法。"); } @Override public void Function() { System.out.println("真实实现功能。"); } }
3、代理主题角色(实现与真实类相同的接口,实际调用真实类的方法)
public class ProxySubject implements ISubject { public RealSubject real; public ProxySubject() { real = new RealSubject(); } @Override public void Method() { real.Method(); } @Override public void Function() { real.Function(); } }
4、测试方法
public class ProxyTest { public static void main(String[] args) { //实例化代理 ISubject subject = new ProxySubject(); //通过代理调用具体功能 subject.Method(); subject.Function(); } }
运行结果: