重构 — 改善既有的类图设计
条款6:模块的防火墙
条款6:模块的防火墙
黄国强 2008/5/27
图 1
看图 1 ,一个模块由A、B、C 三个类 组成,外部类可以访问类 A 。从图上看,外部类通过类 A 开始的依赖箭头可以访问到类 B 和 C 。显然这个模块的细节也暴露给外部类了。
如果在设计上不想让外部类看到这个模块的细节,如何我们应该如何做到这点呢?请看图 2 。
图 2
从图 2 看出,外部类只能看到类 A_Factory_Proxy、I_A_Factory 和 InterFace_A 。类 A、B、C 对外部类来说是不可见的。这里出现的类 InterFace_A 起到了防火墙的作用。工厂代理类 A_Factory_Proxy 的解释请看“
条款 5 ”的描述。