<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    零雨其蒙's Blog

    做優(yōu)秀的程序員
    隨筆 - 59, 文章 - 13, 評(píng)論 - 58, 引用 - 0
    數(shù)據(jù)加載中……

    零雨其蒙《UML和模式應(yīng)用》學(xué)習(xí)筆記(十)

    (零雨其蒙原創(chuàng) 轉(zhuǎn)載請(qǐng)注明)

    2007
    3 13 日星期二

    35 包的設(shè)計(jì)

    包設(shè)計(jì)的核心就是提供穩(wěn)定的包設(shè)計(jì),減少依賴造成的影響!

    組織包結(jié)構(gòu)的準(zhǔn)則

    ?? 準(zhǔn)則

    ??? 包在水平和垂直劃分上的功能性內(nèi)聚。 最基本的“直觀性”原則是基于功能性內(nèi)聚的模塊,將參與共同目的、服務(wù)、協(xié)作、策略和功能的強(qiáng)相關(guān)類型(類或接口)組織在一起。除此之外,還可以根據(jù)類型之間的偶合程度進(jìn)行分組。

    ?

    ?

    ?? 準(zhǔn)則

    ??? 由一族接口組成的包。 將一組功能上相關(guān)的接口放入單獨(dú)的包,與其實(shí)現(xiàn)類分離。

    ?

    ?? 準(zhǔn)則

    ??? 用于正式工作的包和用于聚集不穩(wěn)定類的包。 以包來(lái)發(fā)布產(chǎn)品,則將包內(nèi)穩(wěn)定的部分分成一個(gè)包(正式工作的包),包內(nèi)需要經(jīng)常修改和重新發(fā)布的部分分成一個(gè)包(用于聚集不穩(wěn)定類的包)。基本策略減少對(duì)不穩(wěn)定包的廣泛依賴。

    ?

    ? ? 準(zhǔn)則

    ??? 職責(zé)越多的包越需要穩(wěn)定。 職責(zé)多就意味著有許多包要依賴于此包,如果其不穩(wěn)定,就會(huì)殃及許多依賴于它的包。

    ?

    ?? 準(zhǔn)則

    ?? 將不相關(guān)的類型分離出去。

    ?

    準(zhǔn)則

    ? 使用工廠模式減少對(duì)具體包的依賴。 減少對(duì)其他包中具體類的依賴是提高包的穩(wěn)定性的一個(gè)途徑。

    ?

    準(zhǔn)則

    ?? 包之間沒(méi)有循環(huán)依賴。 解決循環(huán)依賴有兩個(gè)方案,一個(gè)是將參與循環(huán)的類型(類或接口)分解出來(lái)形成較小的新包;另一個(gè)是使用接口來(lái)打破循環(huán),具體做法就是在一個(gè)新包中定義一個(gè)新的接口,使原來(lái)循環(huán)依賴的兩個(gè)類一個(gè)實(shí)現(xiàn)新的接口,一個(gè)依賴新的接口,

    ?

    增強(qiáng)包的穩(wěn)定性的方法

    l???????? 包中僅包含或者主要包含接口和抽象類

    l???????? 不依賴于其他的包(這種包是獨(dú)立的),或者僅依賴非常穩(wěn)定的包,或者封裝了依賴關(guān)系以使其不受影響(比如將特定的實(shí)現(xiàn)細(xì)節(jié)隱藏在一個(gè) fa?ade 對(duì)象之后,其他對(duì)象只對(duì) fa?ade 對(duì)象產(chǎn)生依賴,這就是封裝依賴關(guān)系的一種方式。)。

    l???????? 包含相對(duì)穩(wěn)定的代碼,這些代碼在發(fā)布之前經(jīng)過(guò)充分的測(cè)試和精化。

    l???????? 強(qiáng)制規(guī)定具有緩慢的變化周期。

    ?

    ?

    36 使用 GoF 模式完成更多對(duì)象的設(shè)計(jì)

    關(guān)于異常和錯(cuò)誤處理

    ??? UML 中,異常是一個(gè)特殊的信號(hào)( Signal )(表示對(duì)象之間的異步通信)。這意味著,在交互圖中,異常被表示為異步消息( P429 )。

    ?

    ?

    Proxy 代理模式

    代理只不過(guò)是與被代理對(duì)象實(shí)現(xiàn)相同的接口,它保存指向被代理對(duì)象的引用,并且用于控制對(duì)被代理對(duì)象的訪問(wèn)( P431 )。

    ?

    ?

    問(wèn)題: 不希望或不可能直接訪問(wèn)真正的主題對(duì)象時(shí),應(yīng)該怎么辦?

    解決方案 :通過(guò)代理對(duì)象增加一層間接性,代理對(duì)象實(shí)現(xiàn)與主題對(duì)象相同的接口,并且負(fù)責(zé)控制和增強(qiáng)對(duì)主題對(duì)象的訪問(wèn)。

    ?

    我覺(jué)得代理對(duì)象 Proxy Object )就是一個(gè)和被代理的對(duì)象擁有相同接口的控制器,在正常情況下,它執(zhí)行被代理對(duì)象的功能,如果失敗或其他原因,則轉(zhuǎn)向其他對(duì)象進(jìn)行處理。更通俗的理解代理就像是經(jīng)紀(jì)人,有什么事情經(jīng)紀(jì)人會(huì)替藝人出面擺平,代替藝人回答問(wèn)題,或者把問(wèn)題的焦點(diǎn)轉(zhuǎn)向別處,比如經(jīng)紀(jì)公司。

    ?

    ?

    Abstract Factory 抽象工廠

    問(wèn)題: 如何創(chuàng)建實(shí)現(xiàn)相同接口的一族相關(guān)的類?

    解決方案 :定義一個(gè)工廠接口(抽象工廠)。為每一族要?jiǎng)?chuàng)建的事物定義一個(gè)具體工廠類。也可以定義實(shí)際的抽象類來(lái)實(shí)現(xiàn)工廠接口,并且為擴(kuò)展該抽象類的具體工廠提供公共服務(wù)。

    ?

    剛開(kāi)始看這個(gè)話覺(jué)得真是讓人費(fèi)解,什么叫一族相關(guān)的類啊?看了例子隱約明白了,一族就是一堆,只不過(guò)這一堆有相似之處,就像是一個(gè)家族或種族的人一樣,比如 IBMJavaPOSDevicesFactory NCRJavaPOSDevicesFactory ,它們是不同供應(yīng)商提供的 POS 設(shè)備 Java 驅(qū)動(dòng)程序。一個(gè)家族的人往往從事一樣的事(或許遠(yuǎn)古時(shí)代是這樣,比如一個(gè)狩獵家族或食人家族),這一族類也實(shí)現(xiàn)相同接口(意味著它們擁有相同的公共方法)。看 436 頁(yè)的類圖就可以明白這個(gè)模式是怎么回事了。

    ?

    ?

    Do It Myself 模式

    Do It Myself

    ? ? ? 我(一個(gè)軟件對(duì)象)是對(duì)實(shí)際對(duì)象的抽象,由我來(lái)完成這些通常由實(shí)際對(duì)象所完成的事情。 [Coad95]

    ?

    其實(shí)看了這個(gè)模式讓我覺(jué)得很高興,因?yàn)樵诖酥埃彝ㄟ^(guò)自己的學(xué)習(xí)實(shí)踐和領(lǐng)悟,覺(jué)得設(shè)計(jì)對(duì)象的最基本的原則就是在現(xiàn)實(shí)生活中這個(gè)對(duì)象是什么樣的(擁有什么屬性,能干什么事),設(shè)計(jì)的軟件對(duì)象就是什么樣的,這是最自然的原則。我覺(jué)得很多設(shè)計(jì)方面的問(wèn)題都可以用最自然的方式解決,比如說(shuō)工廠模式,很自然,實(shí)際生活中的對(duì)象(鞋子,人)都是由工廠創(chuàng)造的(或是母親生的);還比如說(shuō)代理模式,如果你不能直接跟一個(gè)人打交道,自然就會(huì)尋找代理。 Larman 在這部分總是說(shuō)“ DIM 模式和多態(tài)通常盜跖相同的設(shè)計(jì)選擇”“ DIM 模式和信息專家模式通常導(dǎo)致相同的設(shè)計(jì)選擇”。 Larman 說(shuō)“這是經(jīng)典的面向?qū)ο笤O(shè)計(jì)風(fēng)格。”但他并沒(méi)有說(shuō)這是最自然最根本的設(shè)計(jì)風(fēng)格,或許在 Peter Coad 的著作中出現(xiàn)過(guò)這樣的字眼,有空再看看。不僅想到了莊子道家提倡的“大道自然”,最自然的東西就是最正確的,最合理的,最和諧的!人設(shè)計(jì)敵不過(guò)天設(shè)計(jì)(人算不如天算),現(xiàn)在人還不能設(shè)計(jì)出和自然界設(shè)計(jì)出來(lái)的人相媲美的機(jī)器人。

    posted on 2007-03-20 14:58 零雨其蒙 閱讀(391) 評(píng)論(0)  編輯  收藏 所屬分類: 學(xué)習(xí)筆記

    主站蜘蛛池模板: 日韩亚洲人成在线| 精品亚洲成α人无码成α在线观看 | 亚洲国产精品狼友中文久久久| 四虎成人免费观看在线网址| 好吊妞在线新免费视频| 全免费a级毛片免费**视频| 女人张开腿等男人桶免费视频 | 一个人免费视频观看在线www| 国产在线播放线91免费| 国产在线精品一区免费香蕉| 精品国产免费一区二区三区香蕉| 久久久久久免费一区二区三区| 久久综合九色综合97免费下载| 中文字幕视频免费| 一个人在线观看视频免费| 四虎成人免费大片在线| 免费少妇a级毛片| 国外亚洲成AV人片在线观看| 亚洲国产人成网站在线电影动漫| 4480yy私人影院亚洲| 国产精品亚洲片在线va| 337p日本欧洲亚洲大胆人人| eeuss免费天堂影院| 国产好大好硬好爽免费不卡| 亚洲一区二区三区免费视频| 成全影视免费观看大全二| 哒哒哒免费视频观看在线www| 亚洲日韩中文字幕在线播放| 亚洲视频一区网站| 亚洲中文字幕无码av永久| 免费国产黄网站在线看| 久久青青草原国产精品免费| 91频在线观看免费大全| 尤物永久免费AV无码网站| 亚洲综合精品网站| 久久久久亚洲AV无码观看| 亚洲AV无码片一区二区三区 | 亚洲精品国产综合久久久久紧| 国产黄在线观看免费观看不卡| jjizz全部免费看片| 又黄又爽一线毛片免费观看|