在第十三章中介绍了如何将类聚合成组件的三个原则。分别是复用/发布等同原则、共同闭包原则、共同复用原则。
复用发布等同原则是指,在 一个组件中类和模快应该是紧密相关的,一个组件中不应该包含不相关的类或者模快,而且这些类应该可以同时进行发布。即软件复用的最小粒度应该等同于软件发布的最小粒度。
共同闭包原则是指我们应该将会同时修改且修改目的相同的类放在同一个组件中,将不会同时修改且有不同修改目的的类放在不同的组件中。这样做的好处就是当修改类时,修改的范围只会限制在同一个组件内,而不会影响其他组件,从而使得修改后只需要重新发布、验证所修改的组件即可,会很大程度上减少组件的发布、验证工作。
共同复用原则是指在组件划分过程中经常共同复用的类或者模快应该放在同一个组件中。这样做的目的是当一个组件依赖于另一个组件时,应该依赖于该组件中所有的类,而不是仅仅依赖于该组件中的一个类。因为当只需要依赖于一个类而依赖一个组件时,被依赖组件的变更同样会引起依赖组件的重新部署。即不要依赖不需要用到的东西。
在实际项目中违反这三个原则的地方有很多。比如一个仓库中中存放着许多用不到类,这就明显违反复用发布原则。又比如一个仓库中包含住业务类、工具类等,同一个仓库中有不同目的的实现类,这就明显违反了共同闭包原则。还比如现在项目中依赖一个仓库有时仅仅只需要该仓库中某个类或者某几个类,会导致很多不相关的类在逻辑中也被依赖了,这就明显违反了共同复用原则。
同时作者指出以上三个指导原则在项目开发过程中应该随着项目的迭代版本进行分别注重不同的方面,要学会取舍。
在第十四章中作者主要讨论了组件之间关系的三个原则。分别是无依赖循环原则、稳定依赖原则、稳定抽象原则。
无循环依赖原则是指组件中各个组件之间的依赖关系如果用图表示的话应该是一个有向无环图,而不是组件之间存在循环依赖。循环依赖会使用一个组件的修改和发布会依赖于其他组件,从而使得一个组件的修改、发布、测试工作与其他组件耦合起来。在实际项目中如果发现有组件之间产生了循环依赖,则可以使用依赖反转原则通过接口使得两个组件之间的依赖反向。或者可以将两个组件的共同依赖部分抽取为一个新的组件,但是这样就会使得整个项目中组件越来越多。
稳定依赖原则是指组件之间的依赖关系必须要指向更稳定的方向。在该部分作者首先介绍了如果衡量一个组件的稳定性。简单来说当一个组件是被其他组件所依赖的时候,这个组件就是稳定的,因为这个组件可以被认为是个基础组件,所以不会频繁被修改。反之,当一个组件过多依赖于其他组件时,这个组件是不稳定的,因为这个组件所依赖的任何一个组件的修改都可能会影响该组件。作者认为在依赖关系中沿着依赖方向组件的稳定性应该越来越高。
稳定抽象原则是指一个组件的抽象化程度应该和其稳定性程度保持一致。简单的来说越稳定的组件就应该是越抽象的,抽象类一般不会被修改并且还保持了良好的可扩展性。
复用发布等同原则是指,在 一个组件中类和模快应该是紧密相关的,一个组件中不应该包含不相关的类或者模快,而且这些类应该可以同时进行发布。即软件复用的最小粒度应该等同于软件发布的最小粒度。
共同闭包原则是指我们应该将会同时修改且修改目的相同的类放在同一个组件中,将不会同时修改且有不同修改目的的类放在不同的组件中。这样做的好处就是当修改类时,修改的范围只会限制在同一个组件内,而不会影响其他组件,从而使得修改后只需要重新发布、验证所修改的组件即可,会很大程度上减少组件的发布、验证工作。
共同复用原则是指在组件划分过程中经常共同复用的类或者模快应该放在同一个组件中。这样做的目的是当一个组件依赖于另一个组件时,应该依赖于该组件中所有的类,而不是仅仅依赖于该组件中的一个类。因为当只需要依赖于一个类而依赖一个组件时,被依赖组件的变更同样会引起依赖组件的重新部署。即不要依赖不需要用到的东西。
在实际项目中违反这三个原则的地方有很多。比如一个仓库中中存放着许多用不到类,这就明显违反复用发布原则。又比如一个仓库中包含住业务类、工具类等,同一个仓库中有不同目的的实现类,这就明显违反了共同闭包原则。还比如现在项目中依赖一个仓库有时仅仅只需要该仓库中某个类或者某几个类,会导致很多不相关的类在逻辑中也被依赖了,这就明显违反了共同复用原则。
同时作者指出以上三个指导原则在项目开发过程中应该随着项目的迭代版本进行分别注重不同的方面,要学会取舍。
在第十四章中作者主要讨论了组件之间关系的三个原则。分别是无依赖循环原则、稳定依赖原则、稳定抽象原则。
无循环依赖原则是指组件中各个组件之间的依赖关系如果用图表示的话应该是一个有向无环图,而不是组件之间存在循环依赖。循环依赖会使用一个组件的修改和发布会依赖于其他组件,从而使得一个组件的修改、发布、测试工作与其他组件耦合起来。在实际项目中如果发现有组件之间产生了循环依赖,则可以使用依赖反转原则通过接口使得两个组件之间的依赖反向。或者可以将两个组件的共同依赖部分抽取为一个新的组件,但是这样就会使得整个项目中组件越来越多。
稳定依赖原则是指组件之间的依赖关系必须要指向更稳定的方向。在该部分作者首先介绍了如果衡量一个组件的稳定性。简单来说当一个组件是被其他组件所依赖的时候,这个组件就是稳定的,因为这个组件可以被认为是个基础组件,所以不会频繁被修改。反之,当一个组件过多依赖于其他组件时,这个组件是不稳定的,因为这个组件所依赖的任何一个组件的修改都可能会影响该组件。作者认为在依赖关系中沿着依赖方向组件的稳定性应该越来越高。
稳定抽象原则是指一个组件的抽象化程度应该和其稳定性程度保持一致。简单的来说越稳定的组件就应该是越抽象的,抽象类一般不会被修改并且还保持了良好的可扩展性。