e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

明星类型:

package dynamic_proxy_mode;

/**
 * 明星类型
 */
public interface Star {
    
    /**
     * 面谈
     */
    void confer();
    
    /**
     * 签合同
     */
    void signContract();
    
    /**
     * 订票
     */
    void bookTicket();
    
    /**
     * 唱歌
     */
    void sing();
    
    /**
     * 收款
     */
    void collectMoney();
    
}

 

具体明星:

package static_proxy_mode;

/**
 * 具体明星, 某某明星, 明星实现类, 真实明星
 */
public class RealStar implements Star {

    
    /**
     * 面谈
     */
    @Override
    public void confer() {
        System.out.println("真实角色面谈!");
    }
    
    
    /**
     * 签合同
     */
    @Override
    public void signContract() {
        System.out.println("真实角色签合同!");
    }
    
    
    /**
     * 订票
     */
    @Override
    public void bookTicket() {
        System.out.println("真实角色订票!");
    }
    
    
    /**
     * 唱歌
     */
    @Override
    public void sing() {
        System.out.println("真实角色(周杰伦本人)唱歌!");
    }
    
    
    /**
     * 收款
     */
    @Override
    public void collectMoney() {
        System.out.println("真实角色收款!");
    }

}

 

明星代理类:

package static_proxy_mode;

/**
 * 经纪人(明星代理类)
 */
public class ProxyStar implements Star {

    
    /**
     * 控制某个明星, 此处可以是列表
     */
    private Star star;
    
    
    /**
     * 构造器(传入明星)
     */
    public ProxyStar(Star star) {
        this.star = star;
    }

    
    /**
     * 由经纪人(代理对象)去面谈
     */
    @Override
    public void confer() {
        System.out.println("经济人(代理角色)面谈!");
    }

    
    /**
     * 经纪人去签合同
     */
    @Override
    public void signContract() {
        System.out.println("经济人签合同!");
    }

    
    /**
     * 经纪人去订票
     */
    @Override
    public void bookTicket() {
        System.out.println("经济人订票!");
    }

    
    /**
     * 经纪人请真实明星唱歌, 代理对象调用真正对象的唱歌方法
     * 此处用到了真实对象, 因为代理对象无法自己做这件事, 如果自己实现了, 就不需要真实对象, 也不叫代理模式
     */
    @Override
    public void sing() {
        star.sing();
    }
    
    
    /**
     * 经纪人去收款
     */
    @Override
    public void collectMoney() {
        System.out.println("经济人收款!");
    }

}

 

类图:

 

测试类:

package static_proxy_mode;

public class Client {

    public static void main(String[] args) {
        //创建真实对象
        Star real = new RealStar();
        //创建代理对象(传入需要代理的真实对象)
        Star proxy = new ProxyStar(real);
        
        //代理对象去做一些事
        proxy.confer();
        proxy.signContract();
        proxy.bookTicket();
        proxy.sing();//代理对象调用真正对象的唱歌方法
        proxy.collectMoney();
    }
    
}

 

执行结果:

经济人(代理角色)面谈!
经济人签合同!
经济人订票!
真实角色(周杰伦本人)唱歌!
经济人收款!

 

 

谢谢声明出处!

转自: http://www.cnblogs.com/gscq073240/articles/7117899.html

 

posted on 2017-07-04 18:07  纯黑Se丶  阅读(144)  评论(0)    收藏  举报