软件设计
所谓软件设计就是解域空间( solution space)中的一道选择题。
设计没有唯一性
专业软件设计师知道什么可以有效运作,什么不可以。任何设计结构上的问题,都有许多合适的解法,然而它们各有不同规格并且各有优缺点。对眼前有益的问题可能适合也可能不适合。白板上可接受的方案,不一定真有实用价值。
如何灵活组合?
组合,富有弹性的组合
系统架构基本原则
主要基本原则是:以“设计”实现某些“原则”( axioms),例如你不能产生两个 Singleton对象或产生一个"disjoint”族系对象。理想上,一个良好的设计应该在编译期强制表现出大部分constraints(约束条件、规范)。
设计的理解
设计是为了厉行constraints (约束条件、规范)
即,设计是实现一些约束和规范,帮助使用者更好的完成需求