最近因为保险上面问题,为了核实工作的是否为自己交保险,然后自己亲自和各保险部门打交道,这才发现: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只是中间器没有具体实现功能,没有权利的。
分享到:
相关推荐
设计模式的学习不仅是为了记住每种模式的应用场景,更重要的是理解其背后的原理和设计理念。通过深入学习和实践,开发者可以逐渐掌握这些模式,并将其内化为自己的设计思维。设计模式的学习过程虽然漫长且充满挑战,...
C++源代码文件可以帮助你更好地理解如何在实际项目中应用这些模式,通过阅读和分析代码,你可以学习如何在C++中实现这些设计模式,并将它们融入到自己的编程实践中。 总而言之,设计模式是软件开发中的宝贵财富,...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式是软件工程领域的一个重要概念,它提供了一种解决常见问题的方法论。GoF(Gang of Four)所提出的23种设计模式被视为面向对象设计的...
通过学习和掌握GoF的23种设计模式,可以显著提高程序员的编码水平,使得开发出的软件系统更加健壮、可扩展、易维护。以上每种模式都有其特定的应用场景,理解和掌握它们的关键在于不断实践和总结,在实际项目中灵活...
### 设计模式精解—GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式作为一种重要的面向对象设计工具,在软件开发中扮演着至关重要的角色。本文旨在深入解析GoF(Gang of Four,四人组)提出的23种设计...
C++实现源码提供了具体编程环境下的应用实例,帮助读者更好地理解和应用这些设计模式。通过阅读和实践这些源码,开发者可以更深入地掌握如何在实际项目中灵活运用设计模式,提升代码质量和可维护性。
设计模式的学习和应用分为几个阶段:首先自己学会设计模式,然后将其转化为自己的语言表达出来,接着是教授他人并最终记录下来。这种学习路径要求学习者不仅要理解设计模式本身,还要具备清晰的表达能力和深刻的理解...
通过学习设计模式,我们可以更好地组织代码结构,提高软件质量,同时减少开发过程中的重复工作。本文将详细介绍GoF提出的23种设计模式,并提供C++实现示例,帮助读者深入理解这些模式的应用场景和技术细节。 #### ...
这份名为“设计模式PPT——25种设计模式详解”的资料,显然是一个深入探讨设计模式的教程,它通过PDF格式对25种主要的设计模式进行了详尽的阐述。 首先,我们要理解设计模式的基本概念。设计模式不是代码,而是一种...
在软件工程中,设计模式是一种被广泛采用的解决常见问题的经验总结,其中中介者模式是结构型设计模式的一种。它的主要目标是降低对象之间的耦合度,使得对象之间的关系更加清晰,同时也提高了代码的可维护性和可扩展...
在实际工作中,掌握这些设计模式并能够灵活应用,将极大地提升个人的技术能力和项目的成功率。此外,通过学习这些模式,还可以培养良好的编程习惯和思维模式,为成为一名优秀的软件工程师打下坚实的基础。