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 }

 

posted @ 2021-02-19 18:05  HickeyZhang  阅读(105)  评论(0)    收藏  举报