代理模式小例子1

代理模式定义:为其他对象提供一种代理,以控制对这个对象的访问
代理模式ex:
简单代理模式类图

以上为该文章例子的简单代理模式的类图
接口:IGamePlayer
实现类:GamePlayer
实现类的代理类:GamePlayerProxy
实现类和代理类实现相同的接口

/**
 * 打游戏的接口
 */
public interface IGamePlayer {
    //登录
    public void login(String name,String pwd);
    //打怪
    public void killBoss();
    //升级
    public void upgrade();
}
/**
 * 打游戏的实现类
 */

public class GamePlayer implements IGamePlayer {
    public String name;

    public GamePlayer(String name) {
        this.name = name;
    }

    @Override
    public void login(String name, String pwd) {
        LogUtil.d(name+"登录成功");
    }

    @Override
    public void killBoss() {
        LogUtil.d(name+"在打怪");
    }

    @Override
    public void upgrade() {
        LogUtil.d(name+"升级成功");
    }
}
/**
 * 实现类的代理类
 * 将被代理的对象通过构造函数传递进来,其实被代理的对象还是具体逻辑执行者,代理类是对其又做了一次封装
 */

public class GameProxy implements IGamePlayer {
    //被代理对象
    private IGamePlayer gamePlayer;
    //通过构造函数传递对谁进行代理
    public GameProxy(IGamePlayer gamePlayer) {
        this.gamePlayer = gamePlayer;
    }
    //代理登录
    @Override
    public void login(String name, String pwd) {
        gamePlayer.login(name,pwd);
    }
    //代理打怪
    @Override
    public void killBoss() {
        gamePlayer.killBoss();
    }
    //代理升级
    @Override
    public void upgrade() {
        gamePlayer.upgrade();
    }
}
/**
 * 场景类
 */

public class GameClient extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        IGamePlayer gamePlayer = new GamePlayer("shj");
        IGamePlayer proxy = new GameProxy(gamePlayer);
        proxy.login("shj","eee");
        proxy.killBoss();
        proxy.upgrade();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值