《敏捷软件开发》读书笔记4

来源:互联网 发布:武汉理工大学知乎 编辑:程序博客网 时间:2024/04/29 14:46

 

1、 依赖倒置原则(DIPP116

a. 高层模块不应该依赖于底层模块。二者都应该依赖于抽象。

b. 抽象不应该依赖于细节。细节应该依赖于抽象。

请考虑一下当高层模块依赖于底层模块时意味着什么。高层模块包含了一个应用程序中的重要的策略选择和业务模型。正是这些高层模块才使得其所在的应用程序区别于其他。然而,如果这些高层模块依赖于底层模块,那么对底层模块的改动就会直接影响到高层模块,从而迫使它们依次做出改动。

这种情形是非常荒谬的!本应该是高层的策略设置模块去影响底层的细节实现模块的。包含高层业务规则的模块应该优先并独立于包含实现细节的模块。无论如何高层模块都不应该依赖于底层模块。

此外,我们更希望能够重用的是高层的策略设置模块。我们已经非常擅长于通过子程序库的形式来重用底层模块。如果高层模块依赖于底层模块,那么在不同的上下文中重用高层模块就会变得非常困难。然而,如果高层模块独立于底层模块,那么高层模块就可以非常容易地被重用。该原则是框架(framework)设计的核心原则。

 

2、 所有结构良好的面向对象框架都具有清晰的层次定义,每个层次通过一个定义良好的、受控的接口向外提供了一组内聚的服务。P117

 

3、 事实上,这种依赖关系的倒置正是好的面向对象设计的标志所在。使用何种语言来编写程序是无关紧要的。如果程序的依赖关系是倒置的,它就是面向对象的设计。如果程序的依赖关系不是倒置的,它就是过程化的设计。

依赖倒置原则是实现许多面向对象技术所宣称的好处的基本底层机制。它的正确应用对于创建可重用的框架来说是必要的。同时它对于构建在变化面前富有弹性的代码也是非常重要的。由于抽象和细节被彼此隔离,所以代码也非常容易维护。P122

 

4、设计模式是很好的东西。它们可以帮组解决很多设计问题。但是它们的存在并不意味着必须要经常使用它们。本例中,虽然可以应用TEMPLATE METHOD模式,但是使用它是不明智的,因为使用该模式的代价要高于它所带来的好处。P148

 

原创粉丝点击