代理模式(静态代理)

参考:http://blog.csdn.net/chenssy/article/details/11179815

 

一、代理模式需要三个角色:

1. Subject: 抽象角色。声明真实对象和代理对象的共同接口。

2. Proxy: 代理角色。代理对象与真实对象实现相同的接口,所以它能够在任何时刻都能够代理真实对象。代理角色内部包含有对真实对象的引用,所以她可以操作真实对象,同时也可以附加其他的操作,相当于对真实对象进行封装。

3. RealSubject: 真实角色。它代表着真实对象,是我们最终要引用的对象。

 

二、举例:

1. Subject

 

1 package com.tgb.proxy;
2 
3 public interface UserMgr {
4 
5     void addUser();
6     void delUser();
7     
8 }

 

 

2. Proxy

 1 package com.tgb.proxy;
 2 
 3 public class UserMgrProxy implements UserMgr {
 4 
 5     private UserMgrImpl userMgrImpl = new UserMgrImpl();
 6 
 7     @Override
 8     public void addUser() {
 9         userMgrImpl.addUser();
10     }
11 
12     @Override
13     public void delUser() {
14         userMgrImpl.delUser();
15     }
16 
17 }

 

3. RealSubject

 1 package com.tgb.proxy;
 2 
 3 public class UserMgrImpl implements UserMgr {
 4 
 5     @Override
 6     public void addUser() {
 7         System.out.println("添加用户....");
 8     }
 9 
10     @Override
11     public void delUser() {
12         System.out.println("删除用户.....");
13     }
14 
15 }

 

测试类:

 1 package com.tgb.proxy;
 2 
 3 public class UserMgrMain {
 4     
 5     public static void main(String[] args){
 6         
 7         UserMgr userMgr = new UserMgrProxy();
 8         
 9         userMgr.addUser();
10         
11         userMgr.delUser();
12         
13     }
14     
15 }

 

结果:

添加用户....
删除用户.....

 

posted @ 2016-08-09 21:23  Mr.van_Gogh  阅读(394)  评论(0编辑  收藏  举报