一代理模式
什么是代理模式:代理就是代替你去处理一些事情,既然是代替你去处理一些事情,那么你就不必亲自去处理了。那么怎么才能代替你去处理呢,首先必须你自己能处理然后授权给你干活的人,然后帮你干活的人代替你去做事,然后你在家等着收获。
举个例子:小学生做作业。首先有个学生接口,接口里有个写作业的方法,然后定义一个小学生。让这个小学生实现写作业的方法。
<span style="white-space:pre"> </span>package test;
<span style="white-space:pre"> </span>public interface Student {
<span style="white-space:pre"> </span>public void doHomeWork();
<span style="white-space:pre"> </span>}
小学生类:
<span style="white-space:pre"> </span>package test;
<span style="white-space:pre"> </span>public class PrimaryStudent implements Student {
<span style="white-space:pre"> </span>private String name ;
<span style="white-space:pre"> </span>public PrimaryStudent(String name) {
<span style="white-space:pre"> </span>this.name = name;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void doHomeWork() {
<span style="white-space:pre"> </span>System.out.println("小学生 "+name+" 在做作业");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
场景类:
package test;
public class Client {
public static void main(String[] agrs) {
Student primaryStudent = new PrimaryStudent("小明");
primaryStudent.doHomeWork();
}
}
</pre>现在<pre name="code" class="java">
小学生学习压力很大,作业堆积如山,该怎么解决呢,当然现在的小学生也很有钱,于是他们在快交作业的时候赶紧找到代写作业的。
代理类:
package test;
//代理类来代替小学生做作业
public class HomeWorkProxy implements Student{
private Student student = null;
public HomeWorkProxy(Student student) {
this.student = student;
}
@Override
public void doHomeWork() {
student.doHomeWork();
}
}
然后修改下场景类:
package test;
public class Client {
public static void main(String[] agrs) {
Student primaryStudent = new PrimaryStudent("小明");
//使用代理类来做作业
HomeWorkProxy homeWorkProxy = new HomeWorkProxy(primaryStudent);
homeWorkProxy.doHomeWork();
}
}
这样把作业都交给代理来做就可以放心的玩耍啦。