》中所主张的软件设计原则是一致的。此外,Robert Martin还在Object Mentor开辟的博客上讨论了这些原则:
http://www.objectmentor.com/resources/publishedArticles.html。
此外,我还发现有另外两本书中也提供了有关软件设计原则的极其有用的信息。第一本是Eric Freeman,Elisabeth Freeman, Kathy Sierra, Bert Bates编著的《Head First Design Patterns》;第二本是Brett McLaughlin,Gary Pollice和David West编著的《Head First Object-Oriented Analysis and Design》。尽管这些书所讨论的原则与Robert Martin的提法并不十分相同,但是它们却十分相近。
不过真实的情况是,上述所有这些针对软件设计原则展开讨论的资源都源自Robert Martin的工作。Robert Martin并不是所有原则的发明者,但是他的确是第一个把这些原则收集到一起的人。下面列出这些软件设计原则:
? SRP—单一责任原则
? OCP—开关原则
? LSP—Liskov替换原则
? ISP—接口隔离原则
? DIP—依赖倒置原则
上述这个原则的集合正好对应于缩略词SOLID。
下面的软件设计原则列表来自于《Head First Design Patterns》一书:
? 封装变化
? 多用组合少用继承
? 基于接口而不是基于实现编程
? 在交互的对象间努力实现松耦合
? 类应该为了扩展而开放,但是为了修改而关闭
? 依赖于抽象,而不要依赖于具体类
? 仅仅对你的朋友交谈
? 不调用我,我们会调用你
? 一个类应该仅有一个改变的理由
当然,上述原则之间也存在许多的重叠之处。例如,“单一责任”原则与后面的“一个类应该仅有一个改变的理由”这一原则是相一致的。然而,它们所强调的重点还是有所不同。更多的细节在此不便赘述。
所有这些设计原则的真正动机在于,努力构建出能够适应变化的软件。上述原则分别对于不同的原则进行相应的阐述,最终目的也不过是为了创建出可以经得起时间测试的软件。