重构 — 改善既有的类图设计 条款5:给工厂加一个代理

重构 — 改善既有的类图设计
条款5:给工厂加一个代理


黄国强 2008/5/21


追悼地震中遇难的同胞

向这次大地震遇害的同胞表示哀悼。

        前些天和同事聊到设计做到什么程度的话题,我特别提到经济性这个原则。在做设计的时候对于灵活性也要有个度。并不是越灵活越好。而把握这个度的原则就是经 济性。在你的项目的需求很少变化或本身很简单的情况下,做过多设计并不好。正所谓“过犹不及”。而我更是认为“欠点总比过好”。
        继续我们重构的话题。
图 1
        请看图1。图中由于 B 引用了 A_Factory 类,而 A_Factory 类又引用了类 AA 和 AB 。所以,类 B 依然依赖于类 AA 和 AB 。当初引入工厂 A_Factory 类的意图是将类 B 和类 AA 和 AB 不发生依赖关系。显然这个意图并没有达到。
        接着看图2。这是重构后的结果。
图 2
   
         我们引入了一个代理类 A_FactoryProxy 。这张图中,类 B 和类 AA 和 AB 完全没有依赖关系。未来类 AA 和 AB 发生任何变化都不会对类 B 造成任何影响。
        从图上也可看出代理类 A_FactoryProxy 内部持有接口 IA_FACTORY 的指针,从而只和接口 IA_FACTORY 发生关系,和类 A_Factory 也不发生关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值