知识卡片
门面模式收窄包接口
内容
包中的类可以是公有的(属于包接口一部分,能被其他包使用)或私有的(对外隐藏),具体规则跟随所用编程环境习惯,即使这意味着不完全符合UML规范。一个有用的收窄接口技巧是:把包内所有类默认设为私有,只能被同包其他类看到,再添加几个公有的门面(Facade)类对外暴露公开行为,内部把操作委托给不对外暴露的私有类。这样整个包对外只露出一个很小、很稳定的表面,内部实现细节可自由重构而不影响外部调用者。
参考来源
- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第7章《包图》(源文件:_epub-src/EPUB/6.xhtml)
- 结论依据:原文说明"你可以把所有类的可见性定为私有的,这样它们只能被同一个包的其他类看到,然后为公有行为添加额外的公有类,这些额外的类称为门面(Facade)[Gang of Four],然后把公开的操作委托给包中不对外暴露的类"。
- 原始内容:一项有用的技能是,通过只输出一个小的子集来减少包的接口,子集里面的操作都和包公开的类有关联。你可以把所有类的可见性定为私有的……然后为公有行为添加额外的公有类,这些额外的类称为门面(Facade)……然后把公开的操作委托给包中不对外暴露的类。