静态代理:
代理类通过调用真实类对象的方法,来提供特定的服务。
真实类需要实现一个业务接口,代理类返回真实类的实例接口对象。
特点:
代理类和真实类实现了相同的接口。
代理类通过真实类实现了相同的方法。
出现了大量的代码重复。
代理类只能为特定的接口服务。
package com.kuang;
public class StaticProxy {
public static void main(String[] args) {
WeddingCompany weddingCompany = new WeddingCompany(new You());
weddingCompany.HappyMarry();
}
}
interface Marry{
void HappyMarry();
}
//真实角色,你去结婚
class You 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();
this.target.HappyMarry();//调用真实类的方法
after();
}
private void after(){
System.out.println("结婚之后收尾款");
}
private void before(){
System.out.println("结婚之前,布置现场");
}
}