1700480300
currentTimeMillis()));
1700480301
1700480302
System.out.println(“张三11月总收入为:”+salary);
1700480303
1700480304
//再查询出勤天数
1700480305
1700480306
System.out.println(”\n===外系统查询出勤天数===”);
1700480307
1700480308
int workDays=facade.queryWorkDays(“李四”);
1700480309
1700480310
System.out.println(“李四本月出勤:”+workDays);
1700480311
1700480312
}
1700480313
1700480314
}
1700480315
1700480316
运行结果如下所示:
1700480317
1700480318
===外系统查询总收入===
1700480319
1700480320
张三11月总收入为:4133
1700480321
1700480322
===外系统查询出勤天数===
1700480323
1700480324
李四本月出勤:22
1700480325
1700480326
在该例中,我们使用了门面模式对薪水计算子系统进行封装,避免子系统内部复杂逻辑外泄,确保子系统的业务逻辑的单纯性,即使业务流程需要变更,影响的也是子系统内部功能,比如奖金需要与基本工资挂钩,这样的修改对外系统来说是透明的,只需要子系统内部变更即可。
1700480327
1700480328
1700480329
1700480330
1700480331
设计模式之禅 33.2.3 最佳实践
1700480332
1700480333
门面模式和中介者模式之间的区别还是比较明显的,门面模式是以封装和隔离为主要任务,而中介者模式则是以调和同事类之间的关系为主,因为要调和,所以具有了部分的业务逻辑控制。两者的主要区别如下:
1700480334
1700480335
❑功能区别
1700480336
1700480337
门面模式只是增加了一个门面,它对子系统来说没有增加任何的功能,子系统若脱离门面模式是完全可以独立运行的。而中介者模式则增加了业务功能,它把各个同事类中的原有耦合关系移植到了中介者,同事类不可能脱离中介者而独立存在,除非是想增加系统的复杂性和降低扩展性。
1700480338
1700480339
❑知晓状态不同
1700480340
1700480341
对门面模式来说,子系统不知道有门面存在,而对中介者来说,每个同事类都知道中介者存在,因为要依靠中介者调和同事之间的关系,它们对中介者非常了解。
1700480342
1700480343
❑封装程度不同
1700480344
1700480345
门面模式是一种简单的封装,所有的请求处理都委托给子系统完成,而中介者模式则需要有一个中心,由中心协调同事类完成,并且中心本身也完成部分业务,它属于更进一步的业务功能封装。
1700480346
1700480347
1700480348
1700480349
[
上一页 ]
[ :1.7004803e+09 ]
[
下一页 ]