读书人

小弟我工作的那点事-学习《设计模式》

发布时间: 2012-11-06 14:07:00 作者: rapoo

我工作的那点事--学习《设计模式》实例应用(Mediator模式)
最近因为保险上面问题,为了核实工作的是否为自己交保险,然后自己亲自和各保险部门打交道,这才发现:1.中国政府部门真的很多 2.时间效率真的很慢。
原来只要把这些交给公司办理,不用管这么多。

最近在学习设计模式,突然想到 公司在无意中扮演了Mediator角色,为了学以致用,将写在下面,可能这方面已经有很多人写了。

1.创意员工类:

public class Colleague {private Mediator mediator;public Colleague() {}/***//*** 构造函数*/public Colleague(Mediator mediator) {this.mediator = mediator;}/** *//*** 获得调停者对象*/public Mediator getMediator() {return mediator;}public void createAccount(){mediator.createAccount();}/** 提供员工存入功能* */public void saveInsurance(){mediator.saveInsurance();}/** 提供员工取消功能* */public void cancelInsurance(){mediator.cancelInsurance();}/** 提供员工更改功能* */public void changedInsurance(){mediator.changedInsurance();}/** 提供员工查询功能* */public void detailInsurance(){mediator.detailInsurance();}}


2.公司类:
这里作为mediator角色,用户交互个人与部门的关系。
public abstract class Mediator {public abstract void colleagueChanged(Colleague colleage);/** 提供员工建立帐户功能* */public abstract void createAccount();/** 提供员工存入功能* */public abstract void saveInsurance();/** 提供员工取消功能* */public abstract void cancelInsurance();/** 提供员工更改功能* */public abstract void changedInsurance();/** 提供员工查询功能* */public abstract void detailInsurance();/** 传达政府部门信息 通知给员工* */public abstract void notify(Colleague colleage);}

具体实现的类:
public class ConcreteMediator extends Mediator {private LaborInsurance laborInsurance;private MedicalInsurance medicalInsurance;private EduInsurance eduInsurance;private UnemploymentInsurance unemplInsurance;private BearingInsurance bearingInsurance;private HouseFund houseFund;public ConcreteMediator(){super();createConcreteMediator();}public void colleagueChanged(Colleague colleague) {}/** *//*** 工厂方法,创建部门对象*/public void createConcreteMediator() {laborInsurance = new LaborInsurance();medicalInsurance = new MedicalInsurance();eduInsurance = new EduInsurance();unemplInsurance = new UnemploymentInsurance();bearingInsurance = new BearingInsurance();houseFund = new HouseFund();}/*** 公司与政府部门交涉处理开户功能*/public void createAccount(){laborInsurance.createAccount();medicalInsurance.createAccount();eduInsurance.createAccount();unemplInsurance.createAccount();bearingInsurance.createAccount();houseFund.createAccount();}/*** 公司与政府部门交涉处理存入功能*/public void saveInsurance() {laborInsurance.saveInsurance();medicalInsurance.saveInsurance();eduInsurance.saveInsurance();unemplInsurance.saveInsurance();bearingInsurance.saveInsurance();houseFund.saveInsurance();}/*** 公司与政府部门交涉处理销户功能*/public void cancelInsurance() {laborInsurance.cancelInsurance();medicalInsurance.cancelInsurance();eduInsurance.cancelInsurance();unemplInsurance.cancelInsurance();bearingInsurance.cancelInsurance();houseFund.cancelInsurance();}/*** 公司与政府部门交涉处理更改功能*/public void changedInsurance() {laborInsurance.changedInsurance();medicalInsurance.changedInsurance();eduInsurance.changedInsurance();unemplInsurance.changedInsurance();bearingInsurance.changedInsurance();houseFund.changedInsurance();}/*** 公司与政府部门交涉处理查询功能*/public void detailInsurance() {laborInsurance.detailInsurance();medicalInsurance.detailInsurance();eduInsurance.detailInsurance();unemplInsurance.detailInsurance();bearingInsurance.detailInsurance();houseFund.detailInsurance();}/*** 公司将政府部门信息传递给用户*/public void notify(Colleague colleage){}}


3.政府部门:
LaborInsurance laborInsurance; 劳动保险部门
MedicalInsurance medicalInsurance;医疗保险部门
EduInsurance eduInsurance; 教育金部门
UnemploymentInsurance unemplInsurance; 失业保险部门
BearingInsurance bearingInsurance; 生育保险部门
HouseFund houseFund; 住房公积金部门
public class LaborInsurance {private Mediator mediator;public Mediator getMediator(){return mediator;}public void setMediator(Mediator mediator){this.mediator = mediator;}/**保险部分通知客户* */public void notifyColleague(){Colleague colleague = new Colleague();mediator.notify(colleague);}public void createAccount(){System.out.println("you are in LaborInsurance and creating account^_^");}public void saveInsurance() {System.out.println("you are in LaborInsurance and saving^_^");}public void cancelInsurance() {System.out.println("you are in LaborInsurance and cancelInsurance ^_^");}public void changedInsurance() {System.out.println("you are in LaborInsurance and changedInsurance ^_^");}public void detailInsurance() {System.out.println("you are in LaborInsurance and detailInsurance ^_^");}}

其他部门类同上。

4.员工交保险的过程测试 如下:
public void testMediator() {Mediator mediator = new ConcreteMediator();Colleague colleague = new Colleague(mediator);colleague.createAccount();colleague.saveInsurance();colleague.changedInsurance();colleague.detailInsurance();colleague.cancelInsurance();}


这就是整个过程,简单的理解了mediator.

感觉有点代理的意思,不过个人理解代理也是有实现功能的 只是处理的另一种方法,而mediator只是中间器没有具体实现功能,没有权利的。

读书人网 >软件开发

热点推荐