代理模式:(为一个对象提供一个替身,以控制对这个对象的访问)

 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象;代理模式有很多变体,都是为了控制与管理对象访问。

代理模式包含如下角色:

ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。

RealSubject:真实主题角色,是实现抽象主题接口的类。

Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。代理对象提供与真实对象相同的接口,以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。

实现动态代理的关键技术是反射。

 

例子:(通过这个例子,从不使用代理模式,到使用代理模式)

监控糖果机:地点、糖果库存和当前状态

ISubject

 1 package com.java.mmzs.agentmode.candymachine;
 2 
 3 import java.io.Serializable;
 4 
 5 public interface State extends Serializable{
 6     public void insertCoin();
 7     public void returnCoin();
 8     public void turnCrank();
 9     public void dispense();
10     public void printstate();
11     public String getstatename();
12 }
State

相关文章: