代理设计模式

2018, Apr 19    

代理设计模式

代理模式:控制对象访问

  • 优点:高扩展性
  1. 接口

    /**
     * 接口
     */
    public interface Star {
        /**
         * 唱歌方法
         */
        void sing();
    }
    
  2. 真实角色

    public class RealStar implements Star {
        @Override
        public void sing() {
            System.out.println("明星本人开始唱歌……");
        }
    }
    
  3. 代理角色

public class ProxyStar implements Star {

    /**
     * 接收真实的明星对象
     */
    private Star star;

    /**
     * 通过构造方法传进来真实的明星对象
     * @param star star
     */
    public ProxyStar(Star star) {
        this.star = star;
    }

    @Override
    public void sing() {
        System.out.println("代理先进行谈判……");
        // 唱歌只能明星自己唱
        this.star.sing();
        System.out.println("演出完代理去收钱……");
    }

}

测试函数

public class Client {

    /**
     * 测试静态代理结果
     */
    public static void main(String[] args) {
        Star realStar = new RealStar();
        Star proxy = new ProxyStar(realStar);

        proxy.sing();
    }
}