代理模式的初步理解

/*
  代理设计一般格式:
    一个接口, 
    一个实现接口的代理类,同时代理类需要传入一个被代理的类
    一个实现接口的被代理类 
*/

package com.proxy.model;

interface Action{
    public abstract void sing();
}
/*
 *需要被代理的类
 */
class  Singer implements Action{
    @Override
    public void sing() {
       System.out.println("歌手自己完成唱歌");    
    }
}
/*
 * 代理类需要传入一个需要被代理的类
 */
class ProxySinger implements Action{

    private Singer singer;
    public ProxySinger(Singer singer){
        this.singer=singer;
    }
    public void ready(){
        System.out.println("1.歌手开演唱会,首先需要经纪人负责联系,自己只负责唱歌");
    }
    @Override
    public void sing() {
       this.ready();
       singer.sing();
       this.end();
    }
    public void end(){
        System.out.println("2.结束演唱会后,经纪人需要完成收尾工作,歌手自己只做了唱歌一件事");
    }
}

public class Test {
    public static void main(String[] args) {
       Action action=new ProxySinger(new Singer());
       action.sing();
    }
}

 

posted @ 2017-09-04 14:17  scwyfy  阅读(127)  评论(0编辑  收藏  举报