Static Proxy
0.静态代理
静态代理的实现比较简单,代理类通过实现与目标对象相同的接口,并在类中维护代理对象。通过构造器塞入目标对象,赋值给代理对象,进而执行代理对象实现的接口方法,并实现前拦截,后拦截等所需的业务功能。
1.应用场景:
某对情侣要结婚了,但忙于毕业设计,只能将结婚相关准备和后续事宜交予结婚筹划公司。
2.代码
1 /** 2 * 静态代理模式: 3 * 真实对象和代理对象都要实现同一个接口 4 * 代理对象要代理真实角色,间接调用真实对象的方法。 5 *好处:代理对象可以做很多真实对象做不了的事情 6 * 真实对象专注做自己的实情 7 */ 8 public class StaticProxy { 9 public static void main(String[] args) { 10 You wife = new You("Zxr",false); 11 You husband = new You("Zzf",true); 12 WeddingCompany jackWedCompy = new WeddingCompany(husband,wife); 13 jackWedCompy.HappyMerry(); 14 } 15 } 16 //共同接口 17 interface Merry{ 18 void HappyMerry(); 19 } 20 //真实对象 21 class You implements Merry{ 22 String name; 23 boolean isMale; 24 public You(String name,boolean isMale){ 25 this.name = name; 26 this.isMale = isMale; 27 } 28 @Override 29 public void HappyMerry() { 30 System.out.println(this.name+"要结婚了,很开心。"); 31 } 32 } 33 //代理对象 34 class WeddingCompany implements Merry{ 35 You wife; 36 You husband; 37 public WeddingCompany(You husband,You wife){ 38 this.husband = husband; 39 this.wife = wife; 40 } 41 @Override 42 public void HappyMerry() { 43 beforeMerry(); 44 this.wife.HappyMerry();//间接调用真实对象的方法 45 this.husband.HappyMerry(); 46 System.out.println("恭喜"+this.husband.name + "先生和" + this.wife.name + "女士结婚。"); 47 afterMerry(); 48 } 49 private void beforeMerry(){ 50 System.out.println("公司安排拍摄" + this.husband.name + "先生和" + this.wife.name + "女士的结婚照。"); 51 } 52 private void afterMerry(){ 53 System.out.println("公司向" + this.husband.name + "先生和" + this.wife.name + "女士收取费用共*,***,***¥。"); 54 } 55 }

浙公网安备 33010602011771号