一、关于认知
“我们从浩瀚的宇宙中抓起一小把沙子,并把它们看成一个‘世界’——一个意识中的世界,接着我们就会开始尝试认知这个‘世界’,该过程就像用一把小刀,将这些沙子分为代表着不同意义,不同角色的部分:这个和那个、这里和那里、黑与白、现在和将来,等等。认知事物就是将它分成代表不同角色和意义的更小事物的一个过程”
---Robert Pirsig
二、应用系统
应用系统 = 一组相互作用的对象
对象 = 一个或多个角色的实现
角色 = 一组相关的责任
责任 = 执行一项任务或掌握某种信息的义务
协作 = 对象或角色(或两者)之间的互动
契约 = 描述协作提纲的一种协定
三、对象角色构造型(Role Stereotypes)
在一个应用系统中,各种角色都具有自身的特征,这些特征就是构造型。
常见的构造型有以下几种:
-
信息的持有者:掌握并提供信息
-
构造者:维护对象之间的关系以及与这些关系相关的信息
-
服务提供者:执行工作,通常为其他对象提供服务
-
协调者:通过向其它对象委托任务来响应事件
-
控制者:进行决策并指导其它对象的行为
-
接口:连接系统的各个部分,并在它们之间进行信息和请求的转换
四、系统设计
软件实现了一个责任系统。不同的角色通过协作履行不同的责任,良好的软件结构可以有效的运行这些责任。我们的设计工作从创建对象开始,将特定的责任分配给对象,使其了解某些信息或完成某些工作,而这些对象的集体行为将履行更大的责任。
对象由于某种需要,相互调用或协作。一个对象需要帮助时,另一个对象则提供相应服务,它们一起共同努力履行更大的责任。设计协作使得我们将对象看成相互协作的伙伴而不是独立的个体。
设计本身是一个迭代递增的过程,在该过程中,我们不断的引入对象及其责任,不断地在小邻域之间构建弹性的协作。