/*
代理设计一般格式:
一个接口,
一个实现接口的代理类,同时代理类需要传入一个被代理的类
一个实现接口的被代理类
*/
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();
}
}