设计模式之代理模式学习------强制代理-----------《设计模式之禅》学习笔记
来源:互联网 发布: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
- 设计模式之代理模式学习------强制代理-----------《设计模式之禅》学习笔记
- 设计模式学习笔记之代理模式
- 设计模式学习笔记之代理模式
- 设计模式之代理模式学习二----普通代理----------《设计模式之禅》学习笔记
- 设计模式之代理模式学习------动态代理-----《设计模式之禅》学习笔记
- 设计模式之代理模式学习--------《设计模式之禅》学习笔记
- 设计模式之代理模式学习
- 设计模式学习之代理模式
- 设计模式之代理模式学习
- 设计模式学习之代理模式
- 设计模式学习之--代理模式
- 设计模式之代理模式学习demo
- 设计模式学习之路-代理模式
- JavaScript学习之设计模式->代理模式
- java设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 第六周项目一--深复制体验
- HDU 1016 Prime Ring Problem
- 【Cocos2d-x】截屏实现的两种方法RenderTexture和glReadPixel,实现和原理详细分析
- mcc函数实现matlab的m文件转化为c,c++文件。
- scanf()函数探究
- 设计模式之代理模式学习------强制代理-----------《设计模式之禅》学习笔记
- jdbc 数据库连接验证 工具
- Http中的GET和POST方法的区别
- 02-SQLlite3之alter:在已有的表中添加、修改或删除列
- Canvas之太阳系
- 移动端重构
- 二叉数的非递归遍历
- Palindrome Partitioning II--LeetCode
- NDK toolchain对应ABI