您的位置:首页 > 其它

设计模式(五)—— 代理模式

2016-08-02 23:19 155 查看

一、定义:


为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。


二、特点:

真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。

代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。

高扩展性

三、情景:

玩游戏时,有些玩家需要上班,但又想尽快升级,于是就在淘宝上找游戏代理,来帮他升级,根据该情景来设计类。

1、游戏接口类(Game)

public interface Game {

void login(Player play);

void play();

}

2、游戏实现类(GameImpl)

public class GameImpl implements Game{

Player player;

public void login(Player play) {
this.player = play;
System.out.println("欢迎【"+play.getUserName()+"】来到游戏世界");
}

public void play() {
int level = player.getLevel()+1;
System.out.println("恭喜升到【"+level+"】级");

}
}

3、玩家类(Player)

private String userName;
private String passWord;
private Integer level;

public Player(){

}

public Player(String userName, String passWord) {
this.userName = userName;
this.passWord = passWord;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getPassWord() {
return passWord;
}

public void setPassWord(String passWord) {
this.passWord = passWord;
}

public Integer getLevel() {
return level;
}

public void setLevel(Integer level) {
this.level = level;
}

4、代理类(Proxy)

public class Proxy implements Game{

Game game = new GameImpl();

public void startProxy(Player player){
this.login(player);
this.play();
}

public void login(Player player) {
game.login(player);
}

public void play() {
game.play();
}
}

5、代理模拟玩家登录测试类

public class ProxyGame {

public static void main(String[] args) {
Player player = new Player("fonxian","123456");
player.setLevel(0);
Proxy proxy = new Proxy();
proxy.startProxy(player);
/**
* 输出结果
* 欢迎【fonxian】来到游戏世界
恭喜升到【1】级
*/
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: