标签:
java代理模式
首先看一张类图,感觉这幅图的描述是比较准确的。subject是一个接口,底下代理类和被代理类实现了这个接口,而被代理类和代理类是关联关系(我理解为代理类包含了一个被代理类的实体)。
代理模式感觉就是把被代理类的装进代理类中,重写被代理类的方法,由于他们共同都实现了一个接口,在代理类中调用方法,实际上就是访问重新封装的方法了。这样做的好处是,一个代理类可以服务多个不同的类,重新封装他们的方法,当然这些类都必须实现同一个接口。
下面的例子我们使用顾客-点餐例子来讲述代理模式。
在点餐的时候,无论是商人、学生、小朋友都要通过服务员来点餐,此时服务员可以当成是一个代理。而不同种类的顾客可以当成是被代理的人。
代码如下:
Customer.java
package reflection.normalproxy; public interface Customer { public void orderDish(); }
WaiterProxy.java
package reflection.normalproxy; public class WaiterProxy implements Customer { Customer customer; public WaiterProxy(Customer customer){ this.customer=customer; } @Override public void orderDish() { // TODO Auto-generated method stub System.out.println("order before"); customer.orderDish(); System.out.println("order after"); } }
CustomerImpl.java
package reflection.normalproxy; public class CustomerImpl implements Customer { @Override public void orderDish() { // TODO Auto-generated method stub System.out.println("custom order"); } public static void main(String args[]){ Customer c=new CustomerImpl(); Customer p=new WaiterProxy(c); p.orderDish(); } }
我们把主函数写在了最后一个类里面
输出:
order before
custom order
order after
标签:
原文地址:http://www.cnblogs.com/actionscr/p/4866261.html