关闭

权衡职责分配

602人阅读 评论(0) 收藏 举报

现在的面向对象分析和设计,鼓励我们将一个任务分配给多个对象共同协作完成(当然,任务要足够复杂),也鼓励我们相对于继承机制,要尽量使用对象组合的方式来解决问题。于是,对象之间的联系就变得密切,对于复杂的任务,可能会出现大量对象互相关联引用,形成复杂的耦合网络。然而,这恰恰违反面向对象分析设计的另一重要原则:弱耦合。实践表明,这些原则都是有益的,但又是矛盾的,也不足为奇,很多看似正确的事情都是互相矛盾的。

有些矛盾是可以解决的,在设计时可以采用合适的降耦方法。比如,一些设计模式就是用来降耦的(主要是行为型模式)。经典模式中,chain of responsibilitycommandmediatorobservor,还有结构型模式中的façadeproxy,都能起到降耦的作用。可以发现,不管是这些模式,还是别的方法,降耦的本质就是让实体对象不进行直接关联,而是产生一个中间对象,由这个中间对象封装某种关联,以降低耦合。

有些矛盾又是不可解决的,这时候就要权衡一下主次了。这种权衡往往和实际问题相关。我觉得,弱耦合通常更加重要:易复用,易扩展,易维护。这时应该考虑一下职责分配的粒度,不要过细,以免增加对象间的耦合度。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7927次
    • 积分:137
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:1篇
    • 评论:0条