代理模式粗浅理解

在不修改源代码的情况下,对原有的业务逻辑进行增强或修改。

 

步骤:

一、创建主题接口,确定必须要有的功能

二、创建被代理的实现类,并设计好核心方法,其余非主要方法的方法体设计为空;

三、创建代理类,必须有一个主题接口类型的属性。提供这个属性的set方法,或者在构造器中为主题属性实例化。

四、

① 创建被代理类对象

② 创建代理类对象,在构造器中传入第①步创建的被代理类对象。

④ 通过代理类对象执行主题方法。

 

五、 相关代码

 1 //测试
 2 public class ProxyTest {
 3     public static void main(String[] args) {
 4         IsMe me = new IsMe();
 5         Life robot = new Robot(me);
 6         robot.eat();
 7     }
 8 }
 9 
10 //接口
11 interface Life {
12     void eat();
13 }
14 
15 //被代理类
16 class IsMe implements Life {
17 
18     @Override
19     public void eat() {
20         System.out.println("我只知道吃饭");
21     }
22 
23 }
24 
25 //代理类
26 class Robot implements Life {
27 
28     private Life life;// 主题接口属性
29 
30     public Robot(Life life) {
31         this.life = life;
32     }
33 
34     @Override
35     public void eat() {
36         before(); //在原有逻辑的前后都加上新的逻辑,且不修改源代码
37         life.eat(); 
38         after();
39     }
40 
41     private void before() {
42         System.out.println("机器人帮我洗漱");
43     }
44 
45     private void after() {
46         System.out.println("机器人帮我刷碗");
47     }
48 
49 }

 

 

 

 

posted @ 2021-11-26 21:48  我tm是星河大帝  阅读(151)  评论(0)    收藏  举报