静态代理的要求:真实角色,代理角色,二者实现同一个接口,代理角色要有真实角色的引用(要知道你是谁)
举个例子:结婚
真实角色:你,你结婚(自定义类)
代理角色:婚庆公司,帮你处理结婚的一些事情(Thread类)
实现同一个接口:都是实现结婚这个事情(都实现Runnable接口)
不同点:你实现结婚,你可以只开心,做点简单的事;婚庆公司实现结婚要干很多事情
1 public class StaticProxy { 2 public static void main(String[] args) { 3 4 You you = new You();//你是真实对象 5 MarryCompany company = new MarryCompany(you);//代理你结婚的事情 6 company.HappyMary(); 7 } 8 } 9 10 //接口 11 interface Marry{ 12 13 void HappyMary(); 14 } 15 16 //真实角色 17 class You implements Marry{ 18 19 @Override 20 public void HappyMary() { 21 System.out.println("结婚你很开心"); 22 } 23 } 24 25 //代理角色 26 class MarryCompany implements Marry{ 27 28 private Marry target; 29 30 public MarryCompany(Marry target){ 31 this.target = target; 32 } 33 34 @Override 35 public void HappyMary() { 36 before(); 37 this.target.HappyMary(); 38 after(); 39 } 40 41 private void before(){ 42 System.out.println("结婚前布置现场"); 43 } 44 45 private void after(){ 46 System.out.println("结婚后收尾款"); 47 } 48 }