设计模式之代理模式学习------强制代理-----------《设计模式之禅》学习笔记

来源:互联网 发布:caffe安装windows 编辑:程序博客网 时间:2024/06/04 19:06

强制代理,顾名思义,强制你使用代理,不使用都不行。你必须通过真实角色找到自己的代理,通过代理再去访问。否则你无法访问。其实这个和普通代理很相似,只是普通代理中在代理类中创建真实角色,强制代理是在真实角色中创建了代理类,然后再通过指定的代理进行访问。

修改后的接口类:

package test;public interface Student {public void doHomeWork();public Student getProxy();}

修改后的primaryStudent类:

package test;public class PrimaryStudent implements Student {private String name ;//自己的代理类private HomeWorkProxy homeWorkProxy = null;public PrimaryStudent(String name)  {this.name = name;}@Override public void doHomeWork() {if(isProxy()) {System.out.println("小学生 "+name+" 在做作业");} else {System.out.println("请使用指定的代理来访问");}}@Overridepublic Student getProxy() {homeWorkProxy = new HomeWorkProxy(this);return homeWorkProxy;}private boolean isProxy() {if(homeWorkProxy == null) {return false;} else {return true;}}}
修改后的代理类:

package test;//代理类来代替小学生做作业public class HomeWorkProxy implements Student{private Student student = null;public HomeWorkProxy(Student student) {this.student = student;}@Overridepublic void doHomeWork() {student.doHomeWork();}@Overridepublic Student getProxy() {// TODO Auto-generated method stubreturn null;}}
修改后的场景类:

package test;public class Client {public static void main(String[] agrs) {//通过真实角色无法访问Student primaryStudent = new PrimaryStudent("小明");primaryStudent.doHomeWork();//通过代理无法访问HomeWorkProxy homeWorkProxy = new HomeWorkProxy(primaryStudent);homeWorkProxy.doHomeWork();//通过真实角色得到指定的代理就可以访问Student proxy = primaryStudent.getProxy();proxy.doHomeWork();}}


0 0
原创粉丝点击