代理模式-Proxy

每个模式的名称就表明了该模式的作用,代理模式就是用代理类替代原对象进行一些操作。采用代理类调用原有的方法,可以对原对象产生的结果进行控制。

1. 定义一个接口:

1 public interface Sourceable {  
2     void function();
3 }  

2. 定义实现类:

1 public class Source implements Sourceable {  
2   
3     @Override  
4     public void function() {  
5         System.out.println("function");  
6     }  
7 }

3. 定义代理:

 1 public class Proxy implements Sourceable {  
 2   
 3     private Sourceable source;  
 4 
 5     public Proxy(){  
 6         this.source = new Source();  
 7     }  
 8 
 9     public Proxy(Sourceable source){  
10         this.source = source;  
11     }  
12 
13     @Override  
14     public void function() {  
15         before();  
16         source.function();  
17         atfer();  
18     }  
19 
20     private void atfer() {  
21         System.out.println("after");  
22     }  
23 
24     private void before() {  
25         System.out.println("before");  
26     }  
27 } 

可以看出:

(1). 代理类实现和目标类相同的接口

(2). 代理类的功能由调用目标类功能来实现

(3). 在调用功能前后等位置(前、后、前后、catch块)可以添加扩展功能

原文地址:https://www.cnblogs.com/joshua-aw/p/6029380.html