不做反應(yīng);同樣,如果在連接建立和偵聽(tīng)狀態(tài),可以進(jìn)行Close (),在連接建立狀態(tài)可以進(jìn)行Acknowledge (),即接收數(shù)據(jù)。
對(duì)于這樣的狀況,最不可取的設(shè)計(jì)應(yīng)該是用一系列的Switch 語(yǔ)句(甚至If/else 語(yǔ)句)進(jìn)行Hard 設(shè)計(jì),對(duì)于以后每一次需求改變,都需要改變?cè)创a,接踵而來(lái)的系統(tǒng)一致性、文檔更新等工作將使開(kāi)發(fā)人員不可避免地陷入一場(chǎng)災(zāi)難,這樣的后果將導(dǎo)致原來(lái)就不合理的設(shè)計(jì)變得更加支離破碎,系統(tǒng)維護(hù)的代價(jià)將越來(lái)越大;就算沒(méi)有需求變更發(fā)生,這些設(shè)計(jì)的可重用性也會(huì)極差。
稍好一些的設(shè)計(jì)是預(yù)先估計(jì)并設(shè)置TCPConnection 類(lèi)所有可能的狀態(tài),并預(yù)先加入設(shè)計(jì),這種需要付出更多的設(shè)計(jì)、開(kāi)發(fā)、維護(hù)的代價(jià),而且也很難達(dá)到完美的效果,所以不多說(shuō)了。
下面介紹一種經(jīng)典的設(shè)計(jì)思路,這種設(shè)計(jì)可以充分體現(xiàn)“為(系統(tǒng))將來(lái)改變預(yù)留接口”的可擴(kuò)展性(Extensible-Design )思想,并且很好的實(shí)現(xiàn)了這一思想。在這里,我們引入一個(gè)抽象類(lèi)TCPState 來(lái)代表TCPConnection 類(lèi)的狀態(tài),給出具體各種狀態(tài)的通用操作接口,并派生出不同的子類(lèi)(實(shí)現(xiàn)具體的操作)去實(shí)現(xiàn)TCPConnection 類(lèi)的不同狀態(tài),例如派生TCPEstablished 類(lèi)來(lái)實(shí)現(xiàn)TCPConnection 類(lèi)的連接建立狀態(tài)。
只需要在TCPConnection 類(lèi)中包含一個(gè)TCPState 的狀態(tài)引用,并在TCPConnection 的狀態(tài)改變時(shí)更新為當(dāng)前的狀態(tài)引用,例如在連接關(guān)閉時(shí)進(jìn)行Open (),狀態(tài)引用就應(yīng)該從TCPClosed 變成TCPEstablished ,這樣就實(shí)現(xiàn)了原來(lái)的要求。
但這個(gè)設(shè)計(jì)思路的意義遠(yuǎn)不止于此。我們可以看到,抽象類(lèi)TCPState 已經(jīng)為T(mén)CPConnection 類(lèi)將來(lái)可能的狀態(tài)留出接口,只需要不斷派生具體的不同狀態(tài)子類(lèi)就可以實(shí)現(xiàn)將來(lái)的狀態(tài)變更,并且無(wú)須影響原有的設(shè)計(jì),也無(wú)須加入多余的代碼來(lái)實(shí)現(xiàn)現(xiàn)在還不需要的功能,所以這是一個(gè)優(yōu)美的、可擴(kuò)展的設(shè)計(jì)思路,非常清晰,易于維護(hù),相信可以給我們?cè)谧鲕浖O(shè)計(jì)時(shí)帶來(lái)一些啟發(fā)。
系統(tǒng)應(yīng)該采用Open 的技術(shù)標(biāo)準(zhǔn)
采用SOA 的開(kāi)發(fā)架構(gòu),是進(jìn)一步降低系統(tǒng)耦合度的措施在經(jīng)典軟件工程理論中,不管是瀑布方法還是原型方法,都是從需求分析做起,一步一步構(gòu)建起形形色色的軟件系統(tǒng)。但是,需求變更像一個(gè)揮之不去的陰影,時(shí)刻伴隨著系統(tǒng)左右。每一個(gè)實(shí)際應(yīng)用系統(tǒng)的開(kāi)發(fā)者都飽嘗了在系統(tǒng)進(jìn)入開(kāi)發(fā)階段、測(cè)試階段,甚至上線階段遭遇應(yīng)接不暇的需求變更的極端痛苦??蛻魧⒆兏男枨笠暈閎ug(錯(cuò)誤)是測(cè)試上線階段的主要問(wèn)題。
如何解決這一問(wèn)題?能否來(lái)一場(chǎng)軟件開(kāi)發(fā)和架構(gòu)的革命?SOA架構(gòu)的提出,就是被人看成這樣的一場(chǎng)革命。其實(shí)質(zhì)就是要將系統(tǒng)模型與系統(tǒng)實(shí)現(xiàn)分割開(kāi)來(lái)。
1.定義
SOA并不是一個(gè)新概念,有人就將CORBA和DCOM等組件模型看成SOA架構(gòu)的前身。早在1996年,Gartner Group就已經(jīng)提出了SOA的預(yù)言,不過(guò)那個(gè)時(shí)候僅僅是一個(gè)“預(yù)言”,當(dāng)時(shí)的軟件發(fā)展水平和信息化程度還不足以支撐這樣的概念走進(jìn)實(shí)質(zhì)性應(yīng)用階段。到了近一兩年,SOA的技術(shù)實(shí)現(xiàn)手段漸漸成熟了。在BEA、IBM等軟件巨頭的極力推動(dòng)下,才得以慢慢風(fēng)行起來(lái)。Gartner為SOA描述的愿景目標(biāo)是實(shí)現(xiàn)實(shí)時(shí)企業(yè)(Real-Time Enterprise)。
關(guān)于SOA,目前尚未有一個(gè)統(tǒng)一的、業(yè)界廣泛接受的定義。一般認(rèn)為:SOA,面向服務(wù)的架構(gòu)是一個(gè)組件模型,它將應(yīng)用程序的不同功能單元----服務(wù)(s
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線啦!快來(lái)測(cè)測(cè)你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html