代理模式(静态代理)
参考: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 }
结果:
添加用户....
删除用户.....