|
設(shè)計(jì)模式
本篇文章主要是接著討論的在業(yè)務(wù)層可以采用的或者常用的一些設(shè)計(jì)模式:
State模式
狀態(tài)模式允許一個(gè)對(duì)象在隨著它的狀態(tài)變化而改變它自身的一些行為。
在項(xiàng)目開發(fā)的過(guò)程中,有一些類,例如一個(gè)業(yè)務(wù)類常常是有自己的一些狀態(tài)的,而且還存在狀態(tài)之間的一些轉(zhuǎn)換,有些狀態(tài)之間是可以進(jìn)行轉(zhuǎn)換的,有些狀態(tài)之間是不能轉(zhuǎn)換的。就拿一個(gè)汽車來(lái)舉例子,汽車有很多的狀態(tài):靜止,啟動(dòng),前進(jìn),后退,停車。而且不能由”前進(jìn)”狀態(tài)轉(zhuǎn)為“啟動(dòng)”狀態(tài)。
很多朋友知道state模式的用法和結(jié)構(gòu),朋友們應(yīng)該也清楚在狀態(tài)之間的轉(zhuǎn)換用swtich.. case的一些弊端。在項(xiàng)目中,很多時(shí)候就沒有”一定”,”非得”要用state模式來(lái)解決類似的問題,即使可以用state模式來(lái)解決。如果變化不大,switch.. case就夠用了。
下面還是來(lái)首先來(lái)看看使用state模式的一些例子。
還是采用電子商務(wù)為背景來(lái)舉例:每一個(gè)訂單都是有狀態(tài)的:New(新的),Shipped(已經(jīng)發(fā)貨),Canceled(已取消)。我們知道一個(gè)新的訂單可以被變?yōu)?rdquo;取消”的狀態(tài),也可以成為”已發(fā)貨”狀態(tài)。但是訂單不能從”已發(fā)貨”狀態(tài),變?yōu)?rdquo;取消”的狀態(tài)。
下面就是例子中的類圖:

NET技術(shù):走向ASP.NET架構(gòu)設(shè)計(jì)——第五章:業(yè)務(wù)層模式,原則,實(shí)踐(后篇),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。