设计模式 —— 代理模式

一、定义:

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

二、特点:

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

三、实现

可见文章,Spring学习——动态代理

四、情景:

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

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

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值