设计构造块:启发式方法1
- 软件设计是非确定性的,灵活熟练地运用一组有效地试探法是合理地软件设计地核心工作。
- 先别问系统做什么,问问它想模仿什么!
- 对象对其他对象暴露地数据及方法都被称为该对象的“公开接口”,而对象向其派生对象暴露的部分则被称为“受保护的接口”
- 使用对象进行设计的步骤:
(1)识别系统中包含的对象及其属性
(2)定义可对对象执行的操作
(3)确定对象可对其他对象进行的操作(依赖、继承等交互关系)
(4)确定对象的哪些部分对其他对象可见
(5)定义每个对象的接口(对其他对象、对其派生对象)
形成一致的抽象1
- 抽象是一种能让你在关注某一概念的同时可以放心地忽略其中一些细节地能力,以便在不同层次处理不同的细节。
- 基类也是一种抽象,它是你集中精力关注一组派生类所具有的共同特性,并在基类的层次上忽略各个具体派生类的细节。
- 一个好的接口也是一种抽象,它能让你关注于接口本身而不是类的内部工作方式。
- 接口包括:子程序接口、包的接口、子系统的接口等。
- 从复杂度的观点看,抽象的主要好处就是它使你忽略无关的细节。比如门是长方形材料加上合叶和把手以及一种特定的组织方式的抽象,而门把手又是铜、镍、铁、钢的一种特定形式的抽象。
- 软件开发人员有时就是在细节层次来构建系统,系统因此变得异常复杂,难以通过人的智力去管理。
- 优秀的程序员会在子程序接口的层次上、类接口的层次上、包接口的层次上进行抽象,这样才能更快、更稳妥地进行开发。