码迷,mamicode.com
首页 > 编程语言 > 详细

java代理模式

时间:2015-10-10 12:26:47      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

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

 

java代理模式

标签:

原文地址:http://www.cnblogs.com/actionscr/p/4866261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!