动态代理:就是临时构建起来的类,静态代理:可以理解为已经写好的类,直接拿来用;
代理随处可见,比如你结婚,婚庆公司给你准备好一切,但是结婚的是你,比如上课,老师准备课件,讲课,但是真正学习还是你
今天直说静态代理:
1:真实角色
2:代理角色
3:公共接口:真实角色和代理角色都必须实现共同的接口;
我们用静态代理模式来模拟婚庆公司:
package com.jianshun.thread;
/**
* 静态代理:
* 公共接口:真实角色和代理角色必须实现共同的接口
* 1:真实角色:
* 2:代理角色:
* @author fanfan
* 模拟婚庆公司
*/
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("you and 嫦娥终于奔月了....");
}
}
//代理角色:婚庆公司
class WeddingCompany implements Marry{
//真实角色
private Marry target;
public WeddingCompany(Marry target) {
this.target = target;
}
public void happyMarry() {
ready();
this.target.happyMarry();
after();
}
public void ready(){
System.out.println("布置会场");
}
public void after(){
System.out.println("闹洞房");
}
}