mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-11-16 22:23:45 +08:00
fix img
This commit is contained in:
@@ -537,7 +537,7 @@ function hide_canvas() {
|
||||
<h3>DCI 模式</h3>
|
||||
<p>DCI 模式认为,在现实世界到对象世界的映射中,构成元素只有三个:数据(Data)、上下文(Context)和交互(Interaction)。在梅拉尼亚这座城市,城市的广场是上下文,城市的居民是数据,他们扮演了不同的角色进行不同的对话,这种对话就是交互。</p>
|
||||
<p>和场景驱动设计相同,DCI 模式需要从业务需求表现的现实世界中截取一幕场景作为设计的上下文。上下文将参与交互的数据“框定”起来,根据场景要达成的业务目标确定对象要扮演的角色,以及角色之间的交互行为。每个数据对象在扮演各自角色时,只能做出符合自己角色身份的行为,这些行为在 DCI 模式中被称之为“角色方法(Role Method)”,它们反映了数据的目的;数据对象自身还拥有一些固定的行为,称之为“本地方法(Local Method)”,它们反映了数据的特征。数据对象通过角色方法参与到上下文的交互,通过本地方法访问和操作自身拥有的数据,然后采用某种形式将角色绑定到对象之上:</p>
|
||||
<p><img src="assets/32381e00-e0e2-11e9-a074-f5ff05024c30" alt="50387535.png" /></p>
|
||||
<p><img src="assets/32381e00-e0e2-11e9-a074-f5ff05024c30" alt="png" /></p>
|
||||
<p>现实世界有很多这样的例子。一个人在上下文中会扮演一种特定的角色,他与别的角色展开不同的交互行为。这时,人作为数据对象,具备 talk()、walk()、write() 等本地行为,这些本地行为与角色无关,属于人的固有行为。当一个人处于课堂学习上下文时,若扮演了教师角色,就会拥有角色行为 teach(),与之交互的角色为学生,角色行为是 learn()。teach() 与 learn() 这样的角色方法由 talk()、write() 等本地方法实现,本地方法不会随着上下文的变化而变化,因此属于数据对象最为稳定的领域逻辑。</p>
|
||||
<p>一个数据对象可以同时承担多个角色,例如一个人既可以是教师,也可以是学生,回到家,面对不同的角色,他也在不断变换着角色:父亲、儿子、丈夫……显然,角色代表了一种身份或者一种能力,更像是一种接口行为。正如上图所示,当一个数据对象参与到上下文的交互中时,就需要将角色绑定到对象上,使得对象拥有角色行为。</p>
|
||||
<h3>转账业务的DCI实现</h3>
|
||||
|
||||
Reference in New Issue
Block a user