知识卡片
门面模式封装策略选择逻辑对外屏蔽扣款子系统复杂度
内容
[[工厂方法模式修复策略模式暴露具体策略类的缺陷]]之后,系统仍需把”判断策略→ 工厂取对象→执行扣款”整套流程对高层屏蔽,这正是门面模式DeductionFacade的职责:只暴露 deduct方法,内部完成三步。发散:作者自曝设计瑕疵——门面里getDeductionType包含业务 判断逻辑,违背”门面内部不该有业务逻辑”原则,实际项目应挪到专门Helper类或由数据库配置 驱动。
参考来源
- 位置:《设计模式之禅(第2版)》第35章《工厂方法模式+策略模式》35.1节(源文件:_epub-src/text/part0153.html)
- 结论依据:原文说明"这么复杂的系统怎么让高层模块访问?……既然系统很复杂,是不是需要封装一下。我们请出门面模式进行封装",并自我指出"在门面模式中已经明确地说明,门面类中不允许有业务逻辑存在,但是你这里还是有了一个getDeductionType方法……该方法完全可以移到其他Helper类中……读者在实际应用中,请把该方法放置到其他类中"。
- 原始内容:既然系统很复杂,是不是需要封装一下。我们请出门面模式进行封装……可能读者要问了,在门面模式中已经明确地说明,门面类中不允许有业务逻辑存在,但是你这里还是有了一个getDeductionType方法,它可代表的是一个判断逻辑呀,这是为什么呢?是的,该方法完全可以移到其他Helper类中……读者在实际应用中,请把该方法放置到其他类中。