综述
应用程序面对的最大的问题是将如何应对变化。将代码有效编排应对变化是设计的事情。最常见的设计要素是原则和模式。
什么是面向对象设计
面向对象设计(OOD)认为世界是由多个对象以及对象之间的一系列消息传递构成的。
设计赞歌
设计要解决的问题
事情总是会发生变化,这是永恒不变的。客户并不知道他们自己想要什么,他们也说不清楚自己的意图。变化的需求是编程中的摩擦力与重力,这些力会作用到周密的设计上,从而形成出人意料的压力,这是这种意外的变化使得设计变得如此重要。因此,设计为了解决意外变化的问题。
为何程序难以更改
面向对象的应用程序由交互产生整体行为,对象是产生交互的零件,而交互则体现在他们之间传递的消息里。想要获得发送给正确目标的正确消息,需要消息的发送者对接受者有所了解。这一点会在两者之间创建许多依赖于联系,并且这些联系还在不断变化中。 面向对象设计与依赖关系管理相关,它是一套对依赖关系进行编排,以便各个对象能够容忍更改的编码技术。在缺乏设计的情形里,非托管的依赖关系很容易造成严重的破坏,因为这些对象互相之间了解太多,更改其中之一就会强制合作者也要随之发生变化。
设计的定义
设计是一门艺术,一门编排代码的艺术。设计的工作具有高度的复杂性:需要对应用程序的需求有总体的理解,与各种设计原则的利与弊的知识组合起来,然后设计出当前算是成本最低,而在将来也能继续保持那个样子的代码编排。
设计工具
设计原则
- 单一职责
- 开闭原则
- 里氏替换原则
- 接口隔离原则
- 依赖倒置原则
- 不重复原则
优秀的设计原则代表的是可测量的真理,遵循它们能改善你的代码。
设计模式
设计模式是在面向对象的软件设计过程中,针对特定问题的简单而优雅的解决方案。他是每位设计师的工具箱里的工具。
设计行为
设计失败
- 缺乏设计知识
- 过度设计
- 设计与编程分开
设计时机
敏捷开发方法相信,大规模预先设计是完全没有意义的,因为它不可能正确。也没有人知道什么时候应用程序会完成。用户在看到具体的软件之前,对所想要的软件是没有概念的,所以向他们展示软件的时机宜早不宜迟。基于这个逻辑,我们的程序应该以微增量的方式来构建软件,逐步将你的方法迭代成满足客户真正需求的应用程序。