静态代理模式
图
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用

定义

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用

作用

  • 代理对象可以做很多真实对象做不了的事
  • 真实对象可以专注于做自己的事

实例

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("吃饭后,饭店服务员收拾");
    }

}

结果

吃饭前,饭店厨房做饭
张三在吃饭
吃饭后,饭店服务员收拾

缺点:一个真实角色就会产生一个代理角色,代码量增大,开发效率降低