😋场景:
以结婚为例:
小明要结婚了, 小明只需要专注于结婚这个事情, 别的事情比如婚礼现场的布置等等可以交给婚庆公司来做.
两个类: 小明, 婚庆公司.
一个接口: 结婚.
两个类都需要实现结婚这个接口, 只不过专注的事情不一样.
婚庆公司需要私有化一个小明,就相当于小明在这个婚庆公司下了单.
package com.smile.test.staticpocxy;
public class StaticProxy {
public static void main(String[] args) {
MarryCompany marryCompany = new MarryCompany(new You());
marryCompany.happyMarry();
}
}
// 结婚
interface Marry{
void happyMarry();
}
// 小明
class You implements Marry{
@Override
public void happyMarry() {
System.out.println("结婚了,真开心");
}
}
// 婚庆公司
class MarryCompany implements Marry{
private Marry marry;
public MarryCompany(Marry marr){
this.marry = marr;
}
@Override
public void happyMarry() {
before();
this.marry.happyMarry();
after();
}
private void after() {
System.out.println("婚庆公司收钱");
}
private void before() {
System.out.println("布置现场");
}
}
输出结果:
布置现场
结婚了,真开心
婚庆公司收钱
Process finished with exit code 0
💛真实对象,代理对象都要实现同一个接口.
💛代理对象要代理真实角色.
💛代理对象可以做很多真实对象做不了的事.
💛真实对象专注做自己的事.