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

一、定义:

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

二、特点:

  • 真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
  • 高扩展性

三、情景:

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

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】级
         */
    }

}
posted @ 2016-08-02 23:19  清泉白石  阅读(205)  评论(0编辑  收藏  举报