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
1700480351
设计模式之禅 33.3 包装模式群PK
1700480352
1700480353
我们讲了这么多的设计模式,大家有没有发觉在很多的模式中有些角色是不干活的?它们只是充当黔首作用,你有问题,找我,但我不处理,我让其他人处理。最典型的就是代理模式了,代理角色接收请求然后传递到被代理角色处理。门面模式也是一样,门面角色的任务就是把请求转发到子系统。类似这种结构的模式还有很多,我们先给这种类型的模式定义一个名字,叫做包装模式(wrapping pattern)。注意,包装模式是一组模式而不是一个。包装模式包括哪些设计模式呢?包装模式包括:装饰模式、适配器模式、门面模式、代理模式、桥梁模式。下面我们通过一组例子来说明这五个包装模式的区别。
1700480354
1700480355
33.3.1 代理模式
1700480356
1700480357
现在很多明星都有经纪人,一般有什么事他们都会说:“你找我的经纪人谈好了”,下面我们就看看这一过程怎么模拟。假设有一个追星族想找明星签字,我们看看采用代理模式怎么实现。代理模式是包装模式中的最一般的实现,类图如图33-6所示。
1700480358
1700480359
1700480360
1700480361
[
上一页 ]
[ :1.700480312e+09 ]
[
下一页 ]