四、松散耦合原则
为交互对象之间的松耦合设计而努力
松散耦合(loose coupling)是理想的设计特征之一(《代码大全2》P80)。
我觉得,这条原则是我们的终极目标,其他八条原则只是为了实现这个目标的方法。
松散耦合意味着在设计时让程序的各个组成部分之间关联最小。通过应用类接口中的合理抽象、封装性及信息隐藏等原则(第一、二原则),设计出相互关联尽可能最少的类。减少关联也就减少了集成、测试与维护时的工作量。
松散耦合的威力:对象之间的相互依赖降到最低,因此能够应对变化,独立地复用任意对象。所以可以建立更富有弹性的系统。
实现方法:遵循抽象和封装等原则,尤其是“针对接口编程”。
效果:能实现“松散耦合”,会很自然地伴随“可扩展性(extensibility)”、“可重用性(re usability)”等设计特性。
举例:要设计一个图书馆借阅管理系统(BorrowManager),必然会牵涉到“书籍(Book)”这个类。
如果“管理系统”知道得太具体(直接引用Book这个类),或者“书籍类”为迎合“上司”在自己的接口中提供了“借阅方法”。虽然这样在“图书借阅管理系统”中能很好的工作,但它们相互之间关系太密切,了解太多,以至于不能被其他复用。例如,无法在网上书店里复用上面那个带有“借阅方法”的“书籍类”;同样无法在“唱片借阅系统”中复用上面的“借阅管理系统”。
比较合理的做法应该是定义好“书籍”的抽象类(或接口)、和“可借阅”接口,然后由图书管理的书去实现它们。而管理系统只和“可借阅”接口打交道。如下图:
为人处世也是如此:乱七八糟的事情知道得越多,就越难从“漩涡”中脱身。不久前腾讯公司控告跳槽的几个高层人员,因为他们知道一些商业机密,跳槽会带来泄密的后果。那些技术人员面临官司缠身,不再是一只自由的小小鸟,可以展翅飞翔。想要自由的生活,就不要“知道”那么多。
评论
发表评论