<pre name="code" class="java">package com.MrZhou.Test;
/*
* 代理模式:请律师的好处是省心并且专业,他在做同样的事情前提下,还会收集对你有利的证据和资料(collectInfo),以及后续事情的处理(finish)。
* 只需要提供有效的名字即可
什么是代理模式?代理模式在各类开发中运用的相当广泛,不论是j2ee,android还是iOS,都能看到它的身影,
所以说设计模式无处不在。代理模式,字面理解就是自己不方便做或者不能做的事情,需要第三方代替来做,
最终通过第三方来达到自己想要的目的或效果。举例了:员工小李在B总公司打工,B总成天让小李加班不给加班费,
小李忍受不住了,就想去法院告B总。虽然法律上允许打官司不请律师,允许自辩。但是小李第一不熟悉法律起诉的具体流程,
第二嘴比较笨,人一多腿就抖得厉害。因此,小李决定去找律师帮忙打官司。找律师打官司和自己打官司相比,有相同的地方,也有不同的地方。
*
*/
public class Test {
public static void main(String[] args) {
System.out.println("我受不了了,我要打官司告老板");
System.out.println("找律师解决一下吧......");
Lawyer lawyer = new Lawyer("傻大哈");
lawyer.dosomething();
lawyer.notifys();
}
}
// 律师类
class Lawyer implements protocol {
String name;
// 对于被告来说,必须创建一个Employer类,并实例化后传参给Lawyer类,这样做,是不是暴漏了Employer?
// 如果隐藏一下,对于被告来说,更智能傻瓜一点,该怎么做呢?
private Employer employer;
public Lawyer(String name) {
if (name == null) {
return;
}
if (employer == null)
employer = new Employer();
employer.register(name);
register(name);
}
@Override
public void register(String name) {
this.name = name;
}
@Override
public void dosomething() {
System.out.println("首先, 我要收集关于" + name + "的材料");
employer.dosomething();
}
@Override
public void notifys() {
//调用employer的方法
System.out.println("本次官司打完了,,,,,,");
employer.notifys();
}
}
// 雇主类
class Employer implements protocol {
String name = null;
@Override
public void register(String name) {
this.name = name;
}
@Override
public void dosomething() {
System.out.println("我是'" + name + "'要告B总,他每天让我不停的加班,还没有加班费。");
}
@Override
public void notifys() {
System.out.println("法院裁定,官司赢了,B总需要赔偿10万元精神补偿费。");
}
}
// Protocol这个类就是上面所说的协议,
// 是被代理者或者代理者共同遵守的约定。也就是说,无论是原告还是代理律师,到法院走程序,都需要做的事情。我们抽象出来,这个就是协议。
interface protocol {
// 登记资料
public void register(String name);
// 打官司
public void dosomething();
// 通知雇主
public void notifys();
}
<pre name="code" class="java">打印结果: 我受不了了,我要打官司告老板
找律师解决一下吧......
首先, 我要收集关于傻大哈的材料
我是'傻大哈'要告B总,他每天让我不停的加班,还没有加班费。
本次官司打完了,,,,,,
法院裁定,官司赢了,B总需要赔偿10万元精神补偿费。