定义
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用
作用
- 代理对象可以做很多真实对象做不了的事
- 真实对象可以专注于做自己的事
实例
public class StaticProxy {
public static void main(String[] args) {
new Hotel(new PeopleEat("张三")).doEat();
}
}
// 吃饭接口,定义吃饭方法
interface eating {
void doEat();
}
// 每个人都会吃饭 --> 真实角色
class PeopleEat implements eating {
// 姓名
private String name;
public PeopleEat(String name) {
this.name = name;
}
@Override
public void doEat() {
System.out.println(name + "在吃饭");
}
}
// 饭店来代理做饭等杂事 --> 代理角色
class Hotel implements eating {
// 来饭店吃饭的对象
private PeopleEat peopleEat;
public Hotel(PeopleEat peopleEat) {
this.peopleEat = peopleEat;
}
@Override
public void doEat() {
// 吃饭前
before();
// 真实对象吃饭
peopleEat.doEat();
// 吃饭后
after();
}
private void before() {
System.out.println("吃饭前,饭店厨房做饭");
}
private void after() {
System.out.println("吃饭后,饭店服务员收拾");
}
}
结果
吃饭前,饭店厨房做饭
张三在吃饭
吃饭后,饭店服务员收拾
缺点:一个真实角色就会产生一个代理角色,代码量增大,开发效率降低