知识卡片

一个子系统可以有多个门面

普通读书笔记卡 · 1856.a.4

内容

[[门面模式的定义与两个角色]]通常一个子系统对应一个门面,但两种情况值得拆多个:门面本身 膨胀难维护时按功能拆分;不同模块需要不同访问权限时新增受限门面,内部委托给完整门面只 暴露被允许的方法,避免重复编写委托代码。发散:第二种拆分体现了 [[接口隔离原则的定义与单一职责原则的区别]]在门面层面的应用——同一子系统可按访问权限 差异开出不同粒度的门面。

参考来源

- 位置:《设计模式之禅(第2版)》第23章《门面模式》(源文件:_epub-src/text/part0107.html) - 结论依据:原文说明门面过于庞大时按功能拆分、以及不同高层模块访问权限不同时新增受限门面Facade2委托给已有门面Facade的两种多门面场景,并解释"为什么要使用委托而不再编写一个委托到子系统的方法呢?那是因为在面向对象的编程中,尽量保持相同的代码只编写一遍"。 - 原始内容:门面已经庞大到不能忍受的程度……建议拆分成多个门面……子系统可以提供不同访问路径……在这种情况下,就需要建立两个门面以供不同的高层模块来访问……为什么要使用委托而不再编写一个委托到子系统的方法呢?那是因为……尽量保持相同的代码只编写一遍。