由于在学习多线程时通过Runnable方式创建线程使用了静态代理模式,于是前来记录。
代码:
public class StaticProxy {
public static void main(String[] args) {
Restaurant restaurant = new Restaurant(new Person("王二"));
restaurant.eat();
}
}
//吃饭接口
interface IEat {
void eat();
}
//人实现了吃饭接口
class Person implements IEat{
private String name;
Person(String name) {
this.name = name;
}
@Override
public void eat() {
System.out.println(name + "吃饭了!");
}
}
//餐馆也实现了吃饭接口
class Restaurant implements IEat {
private Person guest;
//餐馆代理人,为人吃饭提供服务
@Override
public void eat() {
System.out.println("做了一盘鱼香肉丝");
guest.eat();
System.out.println("收钱");
}
Restaurant(Person guest) {
this.guest = guest;
}
}
结果:
总结:
- 真实对象和代理对象要实现同一个接口
- 代理对象要代理真实对象做事
好处:
- 代理对象可以做真实对象做不了的事
- 真实对象可以专注做某件事