一、代理模式概念
所谓代理模式,看名字大家就知道是通过代理类来间接的访问目标对象。
在足球比赛中一个比较形象的反映就是:主教练把队长(或其他队员,这里就指定为队长吧)叫到场边告诉他:叫XXX参与防守或叫XXX压上进攻。这时:队长就是代理类,而XXX就是主教练想要访问的目标对象。下面就基于以上场景来理解代理模式。
二、使用场景
在一个对象不适合或者不能直接引用另一个对象时,我们可以使用代理模式来创建代理类在客户端和目标对象之间起到中介的作用。
三、结构
代理模式由三个部分组成:
1. 接口(Action):代理类与目标对象共同实现同一个接口。
2. 代理类(Captain):由他来代理向两个目标对象传递指令。
3. 目标对象(Player):具体执行命令的对象。
四、实现
开始上干货了。
1. 定义接口
public interface Action { void attack(); //进攻方法 void control(); //控制球权方法 void defend(); //防守方法 }
接口中定义了三个球员的行动:进攻,控制和防守。
2. 定义实际访问对象
public class PlayerA imple