接着上一篇的代理,现在开始普通代理。
普通代理:普通代理要求场景类中不能出现真实角色,即通过代理角色来访问。其实就是把上一篇中的场景类中new PrimaryStudent() 放到了代理类中。
修改下PrimaryStudent:
package test;
public class PrimaryStudent implements Student {
private String name ;
public PrimaryStudent(Student _student,String name) throws Exception {
if(_student == null) {
throw new Exception("不能创建PrimaryStudent");
} else {
this.name = name;
}
}
@Override
public void doHomeWork() {
System.out.println("小学生 "+name+" 在做作业");
}
}
修改后的代理类:
package test;
//代理类来代替小学生做作业
public class HomeWorkProxy implements Student{
private Student student = null;
public HomeWorkProxy(String name) {
try {
student = new PrimaryStudent(this,name);
} catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void doHomeWork() {
student.doHomeWork();
}
}
修改后的场景类:
package test;
public class Client {
public static void main(String[] agrs) {
Student homeWorkProxy = new HomeWorkProxy("小明");
homeWorkProxy.doHomeWork();
}
}
在场景类中没有直接new PrimaryStudent 通过代理类进行的操作、。