静态代理
介绍
静态代理模式总结:
1. 真实对象和代理对象都要实现同一个接口
2. 代理对象要代理真实角色
好处:代理对象可以坐很多真实对象做不了的事情,真实对象就专注坐自己的事情
用静态代理结个婚
定义接口
//定义一个结婚接口
interface Marry{
void happyMarry();
}
定义真实对象
//定义一个类”我“,重写接口中的开心结婚方法
class You implements Marry{
@Override
public void happyMarry() {
System.out.println("gongxi marrys me");
}
}
定义代理对象
//定义一个婚庆公司的类,代理我结婚
class CompanyMarry implements Marry{
//婚庆公司的目标,也就是客户
//代理谁——》婚庆目标角色
private Marry target;
//构造器
public CompanyMarry(Marry target) {
this.target = target;
}
//重写快乐结婚方法
@Override
public void happyMarry() {
before();
target.happyMarry();
after();
}
private void after() {
System.out.println("入洞房");
}
private void before() {
System.out.println("接新娘");
}
}
进行一个婚的结
public class StaticProxy {
public static void main(String[] args) {
You you = new You();
CompanyMarry companyMarry = new CompanyMarry(you);
companyMarry.happyMarry();
//或者
//new CompanyMarry(new You()).happyMarry();
}
}
静态代理与线程作比较
当用实现runnable接口的方法操作多线程的时候,用到的代码是
new Thread(实现runnable接口的实例化对象).start();
静态代理:
new CompanyMarry(new You()).happyMarry();
一样的,Thread也实现了Runnable接口