代理模式的目标是通过代理类来隔离访问者对目标类的直接访问,访问者只能访问代理类,这样能够保证访问者对目标类的访问是受限的。
比如访问某些资源,如果访问者不具备访问的权限或条件,则代理类可以拒绝访问者的访问。这是常见实现权限的方式之一。
简单的代码可以描述该模式:
package dp.proxy; public interface FileAccessor{ public void readFile(String filePath); }
package dp.proxy; public class FileAccessorImpl implements FileAccessor { @Override public void readFile(String filePath) { System.out.println("读取文件操作......"); } }
package dp.proxy; public class FileAccessorProxy implements FileAccessor { boolean accessAble = false; FileAccessor originalAccessor; public FileAccessorProxy(String userName) { if (userName.equals("admin")) { accessAble = true; originalAccessor = new FileAccessorImpl(); } } @Override public void readFile(String filePath) { if (accessAble) { originalAccessor.readFile(filePath); } else { System.out.println("对不起,你不能访问这个文件。"); } } }
package dp.proxy; public class Main{ public static void main(String args[]){ FileAccessor fileAccessor1 = new FileAccessorProxy("user"); FileAccessor fileAccessor2 = new FileAccessorProxy("admin"); System.out.print("普通访问者试图访问文件: "); fileAccessor1.readFile("/opt/local/file"); System.out.print("管理员试图访问文件: "); fileAccessor2.readFile("/opt/local/file"); } }
执行结果:
普通访问者试图访问文件: 对不起,你不能访问这个文件。 管理员试图访问文件: 读取文件操作......
时间: 2024-10-13 00:01:19