我對(duì)業(yè)務(wù)邏輯的動(dòng)態(tài)模型沒有什么明確的思路。盡管我曾經(jīng)設(shè)計(jì)了一些大連數(shù)據(jù)導(dǎo)入導(dǎo)出軟件系統(tǒng),但這些系統(tǒng)中的動(dòng)態(tài)模型都是在無意識(shí)中自然形成的。我想,很多設(shè)計(jì)人員都有類似的經(jīng)歷。在提煉對(duì)象的時(shí)候,想當(dāng)然地添加一些方法和消息,當(dāng)添加的方法足夠多時(shí),想當(dāng)然地提煉一些公共方法,接下來,把這些方法進(jìn)行組織歸納,最后形成業(yè)務(wù)邏輯的動(dòng)態(tài)模型。
試想,這種缺乏明確思路的做法可以帶來滿意的結(jié)果嗎?
致遠(yuǎn)服軟認(rèn)為:http://www.soft8.com.cn/面向服務(wù)的思想在本質(zhì)上就是講故事。從講故事開始來構(gòu)建軟件系統(tǒng),這也是我看重這種思想的根本原因。
我們讓目光再回到保費(fèi)計(jì)算的過程。到目前為止,保費(fèi)計(jì)算的故事還缺少很多細(xì)節(jié),但是在某一個(gè)抽象層次上,它已經(jīng)很完整了。假設(shè)我們把類似的故事組成一個(gè)故事集,例如,核保故事、理賠故事、批改故事等,那么整個(gè)保險(xiǎn)業(yè)務(wù)將會(huì)清晰地呈現(xiàn)在我們面前。
實(shí)際上,我一直認(rèn)為,在企業(yè)級(jí)信息系統(tǒng)中,應(yīng)該有這樣的一個(gè)層,準(zhǔn)確地說,在實(shí)現(xiàn)上要有這樣的一個(gè)業(yè)務(wù) 層。這個(gè)層與故事集直接映射,而且可以獨(dú)立地演進(jìn)。這才是真正意義上的清晰的業(yè)務(wù)接口。
至此,我們還沒有談到組件的問題。
那么,在這個(gè)大連數(shù)據(jù)恢復(fù)軟件開發(fā)案例的設(shè)計(jì)思路中,組件扮演什么角色呢?載體!服務(wù)不一定要依賴于組件,但是組件可以作為服務(wù)的載體。組件通常是一些高內(nèi)聚、低耦合的大連數(shù)據(jù)導(dǎo)入導(dǎo)出軟件代碼塊。寄生在組件上的服務(wù),天生就被要求進(jìn)行清晰的歸納和整理。有人也許會(huì)問,類和組件有什么區(qū)別?類不是也可以做到高內(nèi)聚、低耦合嗎?是的,從邏輯上看,類和組件沒有什么分別,但是在物理實(shí)現(xiàn)上,兩者還是有所不同。組件由多個(gè)類(相互之間存在著靜態(tài)和動(dòng)態(tài)的關(guān)系)組合而成,它的內(nèi)部構(gòu)造更加復(fù)雜和靈活,適合承載業(yè)務(wù)層面的故事。而對(duì)于單個(gè)類來說,要想在高內(nèi)聚、低耦合的條件下完成復(fù)雜的功能是不可能的,換句話說,單個(gè)類要想完成一個(gè)業(yè)務(wù)服務(wù),通常要依賴其他的外部類。
解決了大連數(shù)據(jù)導(dǎo)入導(dǎo)出軟件服務(wù)和組件的問題,再回來看保費(fèi)計(jì)算的過程。為了讓那些計(jì)算步驟的故事與代碼走得更近些,我們換一種故事描述的方式??瓷先ニ浅:啙崱?