代理模式
静态代理
-
当服务对象和代理对象实现了统一接口
-
那么服务对象就可以利用代理对象实现自己无法实现的功能
class StaticAgent { public static void main(String[] args) { new WeddingCompany(new Person()).happyMarry(); } } // 这里我们定义一个结婚的接口 interface Marry{ void happyMarry(); } // 这里我们定义一个Person类实现结婚的接口 class Person implements Marry{ @Override public void happyMarry(){ System.out.println("结婚啦"); } } // 这里我们定义一个婚庆公司的类实现结婚的接口 class WeddingCompany implements Marry{ private Marry target; public WeddingCompany(Marry target){ this.target = target; } @Override public void happyMarry(){ before(); target.happyMarry(); after(); } public void before(){ System.out.println("婚礼前布置会场"); } public void after(){ System.out.println("婚礼后收拾场地"); } }
- 静态代理婚庆公司对象实现了Person类对于婚礼前后的需求,但是不需要Person自己关心如何实现,这样大大提高了代码的复用性
// TODO 动态代理