标签:
由于现在才开始学习java,所以现在只学习了静态的代理模式,后期会继续更新动态设计模式至此文以学习交流.
以下是本人对静态代理模式的一点理解.只供参考,希望对和我一样学习的人有帮助,如有错误之处,欢迎大家指正.以免本人误导他人.
interface HouseBuilder {//首先定义业务接口,接口是用来代理和具体实现的.还有就是用户的使用. public void buildHouse();//提供一个抽象的业务方法. } //具体类(真正具备这样功能的类),用来实现业务接口 class WanKeHouseBuilder implements HouseBuilder { @Override public void buildHouse() { System.out.println("我房屋建造商,我可以帮你盖房子"); } } //代理类也实现业务接口,只不过是间接的调用被代理类对象去完成这件事. public class StaticProxy implements HouseBuilder {//作为代理,也需要提供这样的功能,实际上只是通过他来调用真正具备这样功能的人去完成这件事. //被代理类对象 private HouseBuilder target; public StaticProxy() { target = new WanKeHouseBuilder();//创建具体类的对象(真正具备这个业务功能的人) } @Override public void buildHouse() { System.out.println("代理开始..."); target.buildHouse();//间接的去调用具体类的方法 System.out.println("代理结束..."); } } class ProxyTest { public static void main(String[] args) { HouseBuilder hb = new StaticProxy(); //对用户来说,用户可以见到的只有代理,所以这里我们创建代理对象. //并把它看成一个可以实现这个业务的对象,把对象的地址赋值给业务接口的引用,实现多态性. //代理对象屏蔽被代理对象,我们直接访问代理,通过代理去访问之间的一//些工作. hb.buildHouse();//因为代理类实现(重写了)了接口的抽象方法.所以可以直接调用(虚方法调用). } }
标签:
原文地址:http://www.cnblogs.com/aL0n4k/p/4782556.html