静态代理

Posted zgmzbhqa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态代理相关的知识,希望对你有一定的参考价值。

面向接口编程

静态代理模式:
真实对象与代理对象都要实现同一接口
代理对象要代理真实对象
好处:
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("房屋中介给你住房信息!");
    }
}

 

以上是关于静态代理的主要内容,如果未能解决你的问题,请参考以下文章

片段内部静态类和gradle问题

代理模式之静态代理实现代码

代理模式(静态代理)

Forge Viewer - 如何在场景中访问(或获取渲染/片段代理)克隆的网格?

静态代理模式代码演示

Spring Spring中的静态代理