静态代理模式
使用一个代理对象将对象包装起来,然后用该代理对象来取代该对象,任何对原始对象的调用都要通过代理,代理对象决定是否以及何时调用原始对象的方法
-
真实角色😸
-
代理角色(代理人可以帮忙做事)
new Thread(Runnable target).start()
new Thread() | 代理角色 |
---|---|
target | 真实角色 |
都要实现公共相同的接口使两者具有一致性(完成事情的目标一致?)
public class StaticProxy{
public static void main(String[] args){
new WeddingCompany(new You()).happyMarry();
// 对比分析
// new Thread(线程对象).start();
}
}
interface Marry{
void happyMarry();
}
// 真实角色
class You implements Marry{
// 重写
public void happyMarry(){
System.out.println("委托人结婚");
}
}
// 代理角色,代理真实角色,有个目标对象
class WeddingCompany implements Marry{
// 代理对象
// 内部要有真实对象的引用,即可操作真实对象,实现对象的方法,又附加自己本身的其他操作
private Marry target;
public WeddingCompany(Marry target){
this.target = target;
}
// 重写
public void happyMarry(){
ready();
this.target.happyMarry();
after();
}
private void ready(){
sout(“代理做准备”)
}
private void after(){
sout(“代理善后”)
}
}