Java设计模式-代理模式

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())+" 打怪结束 ");
 }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值