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

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