静态代理

面向接口编程

静态代理模式:
真实对象与代理对象都要实现同一接口
代理对象要代理真实对象
好处:
1.真实对象只专注做自己的事情
2.代理对象可以做很多真实对象做不了的事情。

(例如,你结婚,总体上看是婚礼公司在操办结婚,但你自己只需要当自己新郎新娘就行了,最关键的部分还是你,婚礼公司做了很多其他的事情)

(例如,你租房,去房产中介租房,你只需要看要不要租这个房子,其他事情有房产中介做,总体上看是房产中介代理你去租房,完成一系列租房操作)

(例如,多线程实现用Runnable接口实现时,用到了静态代理)

public class StaticProxy {
    public static void main(String[] args) {
        Rent r = new Worker("张三");//父类引用指向子类对象
        Intermediary intermediary = new Intermediary(r);
        intermediary.rentAnApartment();
    }

}
//找房子功能接口
interface Rent{
    void rentAnApartment();
}

//自己亲自去找房子
class Worker implements Rent{
    private String name;

    public String getName() {
        return name;
    }

    public Worker(String name) {
        this.name = name;
    }

    @Override
    public void rentAnApartment() {
        System.out.println(this.name+"亲自去看房子,判断要不要租这个房子!");
    }
}
//中介帮你找房子
class Intermediary implements Rent{
    private Rent target;//注意这里是接口

    public Intermediary(Rent target) {
        this.target = target;
    }

    @Override
    public void rentAnApartment() {
        this.before();
        this.target.rentAnApartment();
        this.after();
    }

    private void after() {
        System.out.println("跟中介商量价格!");
    }

    private void before() {
        System.out.println("房屋中介给你住房信息!");
    }
}

 

posted @ 2020-07-21 11:45  DannyBoy~  阅读(112)  评论(0编辑  收藏  举报