软件组件设计原则
软件的复杂度和它的规模成指数关系
组件内聚原则
组件内聚原则主要讨论拿些类应该聚合在一个组件中,以便组件既能提供相对完整的功能又不至于过于庞大。
复用发布等同原则
软件复用的最小粒度应该等同于其发布的最想粒度。也就是说,如果你希望别以怎样的粒度复用你的软件,你就应该以怎样的粒度发布你的软件。这其实就是组件的定义了,组件是软件复用和发布的最小粒度软件单元。这个粒度既是复用粒度,也是发布的粒度。
共同封闭原则
我们应该将那些会同时修改,并且为了相同目的而修改的类放到同一个组件中。而将不会同时修改,并且不会为了相同目的而修改的类放到不同的组件中。
组件的目的虽然是为了复用,然而开发中常常引发问题的,恰恰在于组件本身的可维护性。如果组件在自己的生命周期中必须经历各种变更,那么最好不要涉及其他组件,相关的变更都在同一个组件中。这样,当变更发生的时候,只需要重新发布这个组件就可以了,而不是一大堆组件都要受到牵连。
共同复用原则
不要强迫一个组件的用户依赖他们不需要的东西。
这个原则一方面是说,我们应该将相互依赖,共同复用的类放在一个组件中。
一个数据结构容器组件,提供数组、Hash 表等各种数据结构容器,那么对数据结构遍历的类、排序的类也应该放在这个组件中,以使这个组件中的类共同对外提供服务。
另一方面,这个原则也说明,如果不是被共同依赖的类,就不应该放在同一个组件中。如果不被依赖的类发送变更,就会引起组件变更,进而引起使用组件的程序发生变更。这样就会导致组件的使用者产生不必要的困扰,甚至讨厌使用这样的组件,也造成了组件的复用的困难。
组件耦合原则
讨论组件之间的耦合关系应该如何设计。
无循环依赖原则
组件依赖关系不应该出现环。例如 组件 A 依赖 B、组件 B 依赖 C、组件 C 依赖 A,形成循环依赖。
文档依赖原则
组件依赖关系必须指向更稳定的方向。较少变更的组件是稳定的,也就是说,经常变更的组件是不稳定的。不稳定的组件应该依赖稳定的组件。
文档抽象原则
一个组件的抽象化程度应该与其稳定性程度一致。一个稳定的组件应该是抽象的,而不稳定的组件应该是具体的。
如果你设计的组件具体、不稳定、那么可以为这个组件对外提供服务的类设计一组接口,并把这组接口封装在一个专门的组件中,那么这个组件相对就比较抽象、稳定。
jdbc
组件的边界与依赖关系,不仅仅是技术问题
业务
组织
康威定理
评论