四色原型分析模式
- moment-interval
- role
- catalog-entry-like description
- party, place or thing
1.moment-interval archetype(瞬時間隔原型)
這是一個很重要的原型,重要在於時間概念上:某個時刻(moment)或一段很短時間(interval)內. 意味在某個時刻發生的事情因為業務要求或合法性原因需要跟蹤;或者過一段時間以后,應該是很短的時間,可以幫助我們尋找到它。
賣東西是在某個時刻發生的,它有發生日期和時間。租賃行為是在一段時間內發生,從開始出租和歸還所租物品;預定也是持續一段時間,什么時候預定;什么時候過期等。
這些我們都使用moment-interval原型來表達,UML圖如下:
Moment-intervals是和組件模型捆綁在一起,代表了組件模塊關注的核心和靈魂,在一個Model中,Moment-intervals經常封裝的是最關鍵的方法,為讓其顯目,moment-interval的UML圖我們使用粉紅顏色表示。在代碼上用@標識符標識:
/** @archetype moment-interval*/
public class Sale {
public BigDecimal calcTotal(){
}
private int number;
private Date date;
}
在任何領域中,我們都能尋找moment-intervals原型並且開始建模,在原材料資源管理系統中,我們可以這樣對待從報價單(RFQ)到購買訂單(PO)直至發票,在一個制造管理系統中,我們也就可以將一個計划的過程和步驟分析到實際過程和詳細步驟。
原型在幫助指導建模方面一個有效方式是:它能標識那些被包含在Model模型中的類(Classes)以便於區分,原型不只是簡化了類的區別;原型還可以區分類的行為職責(responsibilities),例如類的屬性,方法等。
2.role archetype(角色原型)
角色原型比較容易理解,任何一個系統都需要人或某個組織介入運行,例如論壇系統需要注冊者角色發言;銷售訂單需要業務員角色制定,等等。
這里有一個Party原型定義:它表示一個可標識、可定位的單元,這個單元有自己正常的狀態並且能夠自主控制自己的一些行為,通常情況下,人或組織是一種Party,但象護照,身份證等注冊性標志等都可以作為Party。
注意,並不是說Party或人或組織就是Role原型,必須Party或人或組織參與一種活動后才為角色,就象張三在電影中表演皇帝,他只有參與電影表演才是皇帝角色;李四在XX公司的角色才是經理,他只有參與這家公司運作才是角色經理;否則他們只是一個Party原型。
所以,Role角色是Party扮演的(a role that a Party plays),Party是角色Role的扮演者(role-player)。
當我們在建模時,對於一個角色扮演者,可以有他自己的核心屬性如名稱、年齡(以人為例子),也可以有與業務相關的方法,比如一個小店,當店老板去收錢時,他的角色就是收銀員(cashier),此時可以將與收銀員角色相關業務特點加於其上;當然,同時他也可以是老板(Owner)角色。那么下圖中authorizedFor方法就是參與每個角色的行為,當他作為某個角色被授權登錄后,與此角色相關的業務特點就應用在他身上。
大家已經注意到了:角色原型在UML中是使用黃顏色標識的。角色模型是第二重要的原型,所以使用黃色。
我們已經知道,Party是一個有自主行為、能夠控制自己行為的表示,如人或組織,還有其他沒有自主行為的表示,也就是某個地方或位置或某個事情,我們一般稱( place, or thing),不但Party可以成為角色,而且 place或thing也可以成為角色,比如,一個商品Product可能又兩種角色:在銷售過程中商品;正在使用的商品。
3.party, place, or thing archetype
上面我們說過,party place或thing都可以成為角色原型,注意到角色原型中的UML圖,party圖是以綠色表達。
Party表示有自己正常的狀態並且能夠自主控制自己的一些行為,通常情況下,人或組織是一種Party,但象護照,身份證等注冊性標志等都可以作為Party。
Place or thing表示一樣不會說話沒有行為的東西,例如商品,當然這個商品可以扮演不同角色,既可以是零售的一個電源插座;也可以批發系統中的一個電源插座,它是被賣的,可能在不同業務系統被賣的方式不一樣。
4.description archetype
種類description原型其實是第三重要的原型,一般情況下,它類似目錄級別catalog-entry-like的種類,例如某個商品電源插座屬於家用電器這個種類,當然家用電器又屬於電器這個目錄,是一個樹形的目錄結構。例如論壇中帖子和回帖之間也是一種種類原型。
比如你的紅色福克斯是福特生產的一輛轎車,它有車牌號、購買日期、顏色和里程表等,這些代表Thing原型,那么作為轎車這個種類來說,它有一些種類屬性,例如:生產廠家、生產批號、適用顏色等,這些屬性是轎車這類所有車輛都共有的。
在設計模式這個實現級別,我們通常使用組合模式來實現種類原型。
Description原型在UML中使用藍色表達。
5.四色原型圖
每個原型圖有屬性和連接(關聯 依賴等關系)兩個部分組成。
用一句話來概括四色原型就是:一個什么什么樣的人或組織或物品以某種角色在某個時刻或某段時間內參與某個活動。 其中“什么什么樣的”就是DESC,“人或組織或物品”就是PPT,“角色”就是Role,而”某個時刻或某段時間內的某個活動"就是MI。
轉自:https://www.jdon.com/mda/archetypes.html
參考鏈接:
http://www.step-10.com/notes/index.html
http://www.devshed.com/c/a/Practices/Design-with-ArgoUML/6/
Observations on the DNC(David Anderson)