1.代理模式(Proxy Pattern)是一个使用率非常高的模式。
2.为其他对象提供一种代理以控制对这个对象的访问。
代理模式也叫做委托模式,它是一项基本设计技巧,许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式,而且在日常的应用中,代理模式可以提供非常好的访问控制,在一些著名开源软件中也经常见到它的身影,如Struts2的Form元素映射就采用了代理模式(准确的说是动态代理模式)。
游戏者接口
/**
* @author jin
* @description:
* @tags:
*/
public interface IGamePlayer {
//登陆
public void logIn(String user, String password);
//杀怪
public void killBoss();
//升级
public void upGrade();
}
游戏者
/**
* @author jin
* @description:
* @tags:
*/
public class GamePlayer implements IGamePlayer{
private String name="";
//构造函数
public GamePlayer(String _name){
this.name = _name;
}
//进入游戏前的登陆
public void logIn(String user, String password) {
// TODO Auto-generated method stub
System.out.println("登陆名为"+user+" 的用户 "+this.name+" 登陆成功! ");
}
//打怪
public void killBoss() {
// TODO Auto-generated method stub
System.out.println(this.name+"在猛打老怪!");
}
//升级
public void upGrade() {
// TODO Auto-generated method stub
System.out.println(this.name+" 又升了一级!");
}
}
现场
/**
* @author jin
* @description:
* @tags:
*/
public class Client1 {
public static void main(String[] args) {
//张三这个玩痴
IGamePlayer player = new GamePlayer("张三");
//时间戳
System.out.println((new Date())+" 开始打怪 ");
//登陆
player.logIn("zhang san", "password");
//冲啊,杀怪
player.killBoss();
//升级
player.upGrade();
//时间戳
System.out.println((new Date())+" 打怪结束 ");
}
}
现场
/**
* @author jin
* @description:
* @tags:
*/
public class Client2 {
public static void main(String[] args) {
//你这个痴迷的张三又来了,这次想偷懒
IGamePlayer player = new GamePlayer("张三");
//代理
IGamePlayer proxy = new GamePlayerProxy(player);
//时间戳
System.out.println((new Date())+" 开始打怪 ");
//登陆
proxy.logIn("zhang san", "password");
//冲啊,杀怪
proxy.killBoss();
//升级
proxy.upGrade();
//时间戳
System.out.println((new Date())+" 打怪结束 ");
}
}