码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式 -- 代理模式

时间:2014-07-26 14:46:00      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   os   strong   2014   

概述                                                                                            

为其他对象提供一种代理以控制对这个对象的访问。

抽象角色:声明真实对象和代理对象的共同接口;

代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。

真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

类图                                                                                            

bubuko.com,布布扣

代码                                                                                          

IGamePlayer接口对游戏玩家进行抽象:

public interface IGamePlayer {
    public void killBoss();
    public void UpGrade();
}

GamePlayer实现IGamePlayer接口中的方法:

public class GamePlayer implements IGamePlayer {
    private String name = null;
    public GamePlayer(String name) {
        super();
        this.name = name;
    }
    @Override
    public void killBoss() {
        System.out.println(this.name+"正在killBoss");
    }
    @Override
    public void UpGrade() {
        System.out.println(this.name+"突然UpGrade");
    }
}

GamePlayerProxy是代理类:

public class GamePlayerProxy implements IGamePlayer {
    private IGamePlayer player = null;
    public GamePlayerProxy(IGamePlayer player) {
        super();
        this.player = player;
    }
    // 记录日志
    private void log() {
        System.out.println(new Date().toString() + "的时候在打怪");
    }
    @Override
    public void killBoss() {
        this.log();
        player.killBoss();
    }
    @Override
    public void UpGrade() {
        player.UpGrade();
        this.count();
    }
    private void count() {
        System.out.println("升了1级");
    }
}

测试:

public class Main {
    public static void main(String[] args) {
        IGamePlayer player = new GamePlayer("张三");
        IGamePlayer proxy = new GamePlayerProxy(player);
        proxy.killBoss();
        proxy.UpGrade();
    }
}

优点                                                                                            

  • 职责清晰

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

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

我是天王盖地虎的分割线                                                                 

源代码:http://pan.baidu.com/s/1dD1Qx01

java代理.zip

设计模式 -- 代理模式,布布扣,bubuko.com

设计模式 -- 代理模式

标签:style   blog   http   java   color   os   strong   2014   

原文地址:http://www.cnblogs.com/yydcdut/p/3857245.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!