麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

使用設(shè)計(jì)模式改善程序結(jié)構(gòu)(1)

2019-11-18 13:44:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  使用設(shè)計(jì)模式改善程序結(jié)構(gòu)(1)

設(shè)計(jì)模式是對(duì)特定問(wèn)題經(jīng)過(guò)無(wú)數(shù)次經(jīng)驗(yàn)總結(jié)后提出的能夠解決它的優(yōu)雅的方案。但是,假如想要真正使設(shè)計(jì)模式發(fā)揮最大作用,僅僅知道設(shè)計(jì)模式是什么,以及它是如何實(shí)現(xiàn)的是很不夠的,因?yàn)槟菢泳筒荒苁鼓銓?duì)于設(shè)計(jì)模式有真正的理解,也就不能夠在自己的設(shè)計(jì)中正確、恰當(dāng)?shù)氖褂迷O(shè)計(jì)模式。本文試圖從另一個(gè)角度(設(shè)計(jì)模式的意圖、動(dòng)機(jī))來(lái)看待設(shè)計(jì)模式,通過(guò)這種新的思路,設(shè)計(jì)模式會(huì)變得非常貼近你的設(shè)計(jì)過(guò)程,并且能夠指導(dǎo)、簡(jiǎn)化你的設(shè)計(jì),最終將會(huì)導(dǎo)出一個(gè)優(yōu)秀的解決方案。

1、介紹

在進(jìn)行項(xiàng)目的開(kāi)發(fā)活動(dòng)中,有一些設(shè)計(jì)在項(xiàng)目剛剛開(kāi)始工作的很好,但是隨著項(xiàng)目的進(jìn)展,發(fā)現(xiàn)需要對(duì)已有的代碼進(jìn)行修改或者擴(kuò)展,導(dǎo)致這樣做的原因主要有:新的功能需求的需要以及對(duì)系統(tǒng)進(jìn)一步理解。在這個(gè)時(shí)候,我們往往會(huì)發(fā)現(xiàn)進(jìn)行這項(xiàng)工作比較困難,即使能完成也要付出很大的代價(jià)。此時(shí),一個(gè)必須要做的工作就是要對(duì)現(xiàn)有的代碼進(jìn)行重構(gòu)(refactoring),通過(guò)重構(gòu)使得我們接下來(lái)的工作變得相對(duì)輕易。

重構(gòu)就是在不改變軟件系統(tǒng)代碼的外部行為的前提下,改善它的內(nèi)部結(jié)構(gòu)。重構(gòu)的目標(biāo)就是使代碼結(jié)構(gòu)更加合理,富有彈性,能夠適應(yīng)新的需求、新的變化。對(duì)于特定問(wèn)題給出美麗解決方案的設(shè)計(jì)模式往往會(huì)成為重構(gòu)的目標(biāo),而且一旦我們能夠識(shí)別出能夠解決我們問(wèn)題的設(shè)計(jì)模式,將會(huì)大大簡(jiǎn)化我們的工作,因?yàn)槲覀兛梢灾赜脛e人已經(jīng)做過(guò)的工作。但是在我們的原始設(shè)計(jì)和最終可能會(huì)適用于我們的設(shè)計(jì)模式間的過(guò)渡并不是平滑的,而是有一個(gè)間隙。這樣的結(jié)果就是:即使我們已經(jīng)知道了很多的設(shè)計(jì)模式,面對(duì)我們的實(shí)際問(wèn)題,我們也沒(méi)有一個(gè)有效的方法去判定哪一個(gè)設(shè)計(jì)模式適用于我們的系統(tǒng),我們應(yīng)該去怎樣應(yīng)用它。

造成上述問(wèn)題的原因往往是由于過(guò)于注重設(shè)計(jì)模式所給出的解決方案這個(gè)結(jié)果,而對(duì)于設(shè)計(jì)模式的意圖,以及它產(chǎn)生的動(dòng)機(jī)卻忽略了。然而,正是設(shè)計(jì)模式的意圖、動(dòng)機(jī)促使人們給出了一個(gè)解決一類(lèi)問(wèn)題的方案這個(gè)結(jié)果,設(shè)計(jì)模式的動(dòng)機(jī)、意圖體現(xiàn)了該模式的形成思路,所以更加貼近我們的實(shí)際問(wèn)題,從而會(huì)有效的指導(dǎo)我們的重構(gòu)歷程。本文將通過(guò)一個(gè)實(shí)例來(lái)展示這個(gè)過(guò)程。

在本文中對(duì)例子進(jìn)行了簡(jiǎn)化,這樣做是為了突出問(wèn)題的實(shí)質(zhì)并且會(huì)使我們的思路更加清楚。思路本身才是最重要、最根本的,簡(jiǎn)化了的例子不會(huì)降低我們所展示的思路、方法的適用性。

2、問(wèn)題描述

一個(gè)完善的軟件系統(tǒng),必須要對(duì)出現(xiàn)的錯(cuò)誤進(jìn)行相應(yīng)的處理,只有這樣才能使系統(tǒng)足夠的健壯,我預(yù)備以軟件系統(tǒng)中對(duì)于錯(cuò)誤的處理為例,來(lái)展示我所使用的思路、方法。

在一個(gè)分布式的網(wǎng)管系統(tǒng)中,一個(gè)操作往往不會(huì)一定成功,經(jīng)常會(huì)因?yàn)檫@樣或者那樣的原因失敗,此時(shí)我們就要根據(jù)失敗的原因相應(yīng)的處理,使錯(cuò)誤的影響局限在最小的范圍內(nèi),最好能夠恢復(fù)而不影響系統(tǒng)的正常運(yùn)行,還有一點(diǎn)很重要,那就是在對(duì)錯(cuò)誤進(jìn)行處理的同時(shí),一定不要忘記通知系統(tǒng)的治理者,因?yàn)橹挥兄卫碚卟庞心芰?duì)錯(cuò)誤進(jìn)行進(jìn)一步的分析,從而查找出錯(cuò)誤的根源,從根本上解決錯(cuò)誤。

下面我就從錯(cuò)誤處理的通告治理者部分入手,開(kāi)始我們的旅程。假定一個(gè)在一個(gè)分布式環(huán)境中訪問(wèn)數(shù)據(jù)庫(kù)的操作,那么就有可能因?yàn)橥ㄐ诺脑蚧蛘邤?shù)據(jù)庫(kù)本身的原因失敗,此時(shí)我們要通過(guò)用戶(hù)界面來(lái)通知治理者發(fā)生的錯(cuò)誤。簡(jiǎn)化了的代碼示例如下:


/* 錯(cuò)誤碼定義 */
class ErrorConstant
{
public static final int ERROR_DBaccess = 100;
public static final int ERROR_COMMUNICATION = 101;
}

/* 省略了用戶(hù)界面中的其他的功能 */
class GUISys
{
public void announceError(int errCode) {

switch(errCode) {

case ErrorConstant.ERROR_DBACCESS:
/* 通告治理者數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤的發(fā)生*/
break;

case ErrorConstant.ERROR_COMMUNICATION:
/* 通告治理者通信錯(cuò)誤的發(fā)生*/
break;

}
}
}


開(kāi)始,這段代碼工作的很好,能夠完成我們需要的功能。但是這段代碼缺少相應(yīng)的彈性,很難適應(yīng)需求的變化。
(未完待續(xù))

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲影视中文字幕 | 欧美一区在线观看视频 | 久久亚洲精选 | 精品视频一区二区三区四区 | 精品69人人人人 | 国产精品成人一区二区三区电影毛片 | 色蜜桃av | 国产羞羞视频免费在线观看 | 成人福利视频在线观看 | 一区二区免费看 | 日韩精品中文字幕一区二区 | 成人一级黄色片 | 制服丝袜日日夜夜 | 亚洲成人福利在线观看 | 国产青草视频在线观看 | 免费观看一区二区三区视频 | 日本特级a一片免费观看 | 91色一区二区三区 | 午夜天堂在线视频 | 欧美性生活视频免费 | 日韩视| 亚洲欧美不卡视频 | 毛片视频播放 | 久久中文一区 | 99精彩视频在线观看 | xxxxhd73国产| 亚洲性生活免费视频 | 欧美一a一片一级一片 | 欧美亚州 | 欧美在线一级 | 97久久精品一区二区三区观看 | 密室逃脱第一季免费观看完整在线 | 一区二区精品在线 | 看黄在线观看 | 天天草天天爱 | 国产精品自拍片 | 91在线精品亚洲一区二区 | 九九热在线视频观看 | 毛片a级毛片免费播放100 | 成年人视频在线免费播放 | 乱淫67194|