代理模式

一.作用:为其他对象提供一种代理以控制对这个对象的访问。

二.代码

1.要被代理的目标接口
1 package design.proxy;
2 
3 public interface Target {
4     void action();
5 }
2.被代理目标的实现类A
 1 package design.proxy;
 2 
 3 public class TargetImplA implements Target{
 4 
 5     @Override
 6     public void action() {
 7         // TODO Auto-generated method stub
 8         System.out.println("这是代理目标的实现类A。。");
 9     }
10 
11 }
3.代理类A也实现了目标接口,这样代理类A就可以代理任意目标接口的实现类,这里代理类A专门代理目标接口的实现类A
 1 package design.proxy;
 2 
 3 public class ProxyA implements Target{
 4     private Target target;
 5     public ProxyA(){
 6         System.out.println("这是代理类A。。");
 7         this.target = new TargetImplA();
 8     }
 9     
10     public void action(){
11         System.out.println("---代理开始---");
12         target.action();
13         System.out.println("---代理结束---");
14     }
15 }
4.测试类
1 package design.proxy;
2 
3 public class Test {
4     public static void main(String[] args) {
5         Target target = new ProxyA();
6         target.action();
7     }
8 }
5.结果

这是代理类A。。
---代理开始---
这是代理目标的实现类A。。
---代理结束---

三.代理模式和装饰模式的区别:

从代理类和装饰类可以看出,它们的最大区别就是代理模式由代理类创建目标对象,而装饰类需要传入目标对象。

 

posted @ 2016-11-02 10:07  执迷而不悔  阅读(94)  评论(0编辑  收藏  举报