* 静态代理模式(静态定义代理类):类是写好的,直接拿来用。可以用来记录日志
* 需要三部分:1.抽象角色;2.真实角色;3.代理角色
* 模拟歌手唱歌
我们使用runnable接口实现多线程的时候,启动必需借助thread类对象,这个对象就是静态代理对象。
public class TestStaticProxy {
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();
}
}
//1.抽象角色
interface Star{
void confer();//面谈
void signContract();//签合同
void bookTicket();//订票
void sing();//唱歌
void collectMoney();//收尾款
}
//真实角色
class RealStar implements Star{
@Override
public void confer() {
System.out.println("RealStar.confer()");
}
@Override
public void signContract() {
System.out.println("RealStar.signContract()");
}
@Override
public void bookTicket() {
System.out.println("RealStar.bookTicket()");
}
@Override
public void sing() {
System.out.println("RealStar(歌手唱歌).sing()");
}
@Override
public void collectMoney() {
System.out.println("RealStar.collectMoney()");
}
}
//代理角色
class ProxyStar implements Star{
private Star star;
public ProxyStar(Star star) {
this.star = star;
}
@Override
public void confer() {
System.out.println("ProxyStar.confer");
}
@Override
public void signContract() {
System.out.println("ProxyStar.signContract");
}
@Override
public void bookTicket() {
System.out.println("ProxyStar.bookTicket");
}
@Override
public void sing() {//这个是歌手来唱歌。
star.sing();
}
@Override
public void collectMoney() {
System.out.println("ProxyStar.collectMoney");
}
}