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

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

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

    posts - 13,comments - 70,trackbacks - 1

         這里說的幾個(gè)軟件模式是屬于原則層次一級的,比GoF等軟件設(shè)計(jì)模式高一層。遵循這些原則可以使我們設(shè)計(jì)出來的軟件有更好的可復(fù)用性和可維護(hù)性,同樣GoF等軟件設(shè)計(jì)模式也是遵循這一原則的。

         下邊的條列只是簡單的介紹,以便忘記了偶爾過來游覽一下,詳細(xì)的介紹請參閱:《Java模式》、《UML和模式應(yīng)用-面向?qū)ο蠓治雠c設(shè)計(jì)導(dǎo)論》

    1.         GRASP模式

    GRASPGeneral Responsibility Assignment Software Pattern(通用指責(zé)分配軟件模式)的縮寫。

    1)  專家模式(Expert)

    解決方案:將職責(zé)分配給具有履行職責(zé)所需要的信息的類

    通俗點(diǎn)就是:該干嘛干嘛去,別管別人的閑事或者我的職責(zé)就是搞這個(gè),別的事不管。

    舉個(gè)簡單的例子,如果有一個(gè)類是專門處理字符串相關(guān)的類,那么這個(gè)類只能有字符串處理相關(guān)的方法,而不要將日期處理的方法加進(jìn)來。也就是提高軟件高內(nèi)聚一種原則。

    2)  創(chuàng)建者(Creator)

    解決方案:將創(chuàng)建一個(gè)類A的實(shí)例的職責(zé)指派給類B的實(shí)例,如果下列條件滿足的話:

    a)         B聚合了A對象

    b)        B包含了A對象

    c)        B紀(jì)錄了A對象的實(shí)例

    d)        B要經(jīng)常使用A對象

    e)         當(dāng)A的實(shí)例被創(chuàng)建時(shí),B具有要傳遞給A的初始化數(shù)據(jù)(也就是說B是創(chuàng)建A的實(shí)例這項(xiàng)任務(wù)的信息專家)

    f)         BA對象的創(chuàng)建者

    如果以上條件中不止一條成立的話,那么最好讓B聚集或包含A

    通俗點(diǎn)就是:我要用你所以我來創(chuàng)建你,請不要讓別人創(chuàng)建你

    這個(gè)模式是支持低耦合度原則的一個(gè)體現(xiàn)

    3)  高聚合度或高內(nèi)聚(High Cohesion)

    解決方案:分配一個(gè)職責(zé)的時(shí)候要保持類的高聚合度

    聚合度或內(nèi)聚度(cohesion)是一個(gè)類中的各個(gè)職責(zé)之間相關(guān)程度和集中程度的度量。一個(gè)具有高度相關(guān)職責(zé)的類并且這個(gè)類所能完成的工作量不是特別巨大,那么他就是具有高聚合度。

    4)  低耦合度或低耦合(Low Coupling)

    解決方案:在分配一個(gè)職責(zé)時(shí)要使保持低耦合度。

    耦合度(coupling)是一個(gè)類與其它類關(guān)聯(lián)、知道其他類的信息或者依賴其他類的強(qiáng)弱程度的度量。一個(gè)具有低()耦合度的類不依賴于太多的其他類。

    5)  控制者(Controller)

    解決方案:將處理系統(tǒng)事件消息的職責(zé)分派給代表下列事物的類:

    a)         代表整個(gè)“系統(tǒng)”的類(虛包控制者)

    b)        代表整個(gè)企業(yè)或組織的類(虛包控制者)

    c)        代表真實(shí)世界中參與職責(zé)(角色控制者)的主動(dòng)對象類(例,一個(gè)人的角色)

    d)        代表一個(gè)用況中所有事件的人工處理者類,通常用“<用例名>處理者”的方式命名(用例控制者)

    這是一個(gè)控制者角色職責(zé)分配的原則,就是哪些控制應(yīng)該分派給哪個(gè)角色。

    6)多態(tài)

    當(dāng)相關(guān)的可選擇的方法或行為隨著類型變化時(shí),將行為的職責(zé)-使用多態(tài)的操作-分配給那些行為變化的類型

    也就是說盡量對抽象層編程,用多態(tài)的方法來判斷具體應(yīng)該使用那個(gè)類,而不是用if instanceof 來判斷該類是什么接來執(zhí)行什么。

    7)純虛構(gòu)

    一個(gè)純虛構(gòu)意味著虛構(gòu)某些事物,而不是到了迫不得已我們才這樣做。

    例,我們的Sale類的數(shù)據(jù)要存入數(shù)據(jù)庫,但是他必須和數(shù)據(jù)庫接口相連接,如果將接口連接放入Sale類中勢必增加該類的耦合度,所以我們可以虛構(gòu)一個(gè)類來處理與數(shù)據(jù)庫接口連接的問題。這個(gè)類就是我們虛構(gòu)出來的一個(gè)事物。

    8)中介者

    將職責(zé)分配給一個(gè)中間對象以便在其他構(gòu)件或服務(wù)之間仲裁,這樣這些構(gòu)件或服務(wù)沒有被直接耦合。這個(gè)中間對象(intermediary)在其他構(gòu)件或服務(wù)間創(chuàng)建一個(gè)中介者(Indirection)。這個(gè)中間對象也就事7)中的純虛構(gòu)。

    9)不要和陌生人講話

    分配職責(zé)給一個(gè)客戶端的直接對象以使它與一個(gè)間接對象進(jìn)行協(xié)作,這樣客戶端無需知道這個(gè)間接對象。

    這個(gè)模式-也被叫做(Demeter)準(zhǔn)則。

           通俗點(diǎn)就是:只與你直接的朋友們通信

                                不要跟“陌生人”說話

    每個(gè)軟件單位對其他的單位都只有最少的知識,而且局限于那些與本單位密切相關(guān)的軟件單位

    2.         其他設(shè)計(jì)原則

    1)“開-閉”原則(Open-Closed Principle,或者OCP

    一個(gè)軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉。

    意思就是在設(shè)計(jì)一個(gè)模塊的時(shí)候,應(yīng)當(dāng)使這個(gè)模塊在不被修改的前提下被擴(kuò)展。換言之,應(yīng)當(dāng)可以在不修改代碼的情況下改變這個(gè)模塊的行為。

    2)里氏代換原則(Liskov Substitution Principle, 或者LSP

    這個(gè)就是盡量用多態(tài)的方法編程,也就是GRASP模式中的多態(tài)。

    3)依賴倒轉(zhuǎn)原則(Dependency Inversion Principle, 或者DIP

    依賴倒轉(zhuǎn)原則講的是:要依賴于抽象,不要依賴于具體

    就是說我們盡量在抽象層進(jìn)行控制編程,要針對接口編程,不要針對實(shí)現(xiàn)編程。

    4)接口隔離原則(Interface Segregation Principle, 或者ISP

    使用多個(gè)專門的接口比使用單一的總接口要好。也就是,從一個(gè)客戶類的角度來講:一個(gè)類對另外一個(gè)類的依賴性應(yīng)當(dāng)是建立在最小的接口上的。

    5)組合/聚合復(fù)用原則(Composition/Aggregation Principle, 或者CARP

    又叫合成復(fù)用原則。原則就是在一個(gè)新的對象里面使用一些已有的對象,使之成為新對象的一部分:新的對象通過向這些對象的委派達(dá)到復(fù)用已有功能的目的。也就是,要盡量使用類的合成復(fù)用,盡量不要使用繼承

    6)變與不變的分離
        更擴(kuò)展一步,就是將不同變化的組件進(jìn)行隔離.最簡單的例子就是javabean中的存取器。它隔離了不變的接口和變化的內(nèi)部屬性。這方面體現(xiàn)最好的個(gè)人覺得就是eclipse,通過變化的插件,eclipse可以用來實(shí)現(xiàn)任何功能。

    posted on 2005-09-26 17:21 落花飛雪 閱讀(2215) 評論(0)  編輯  收藏 所屬分類: OOA/D & OOP

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 2022免费国产精品福利在线| 亚洲一本一道一区二区三区| jizz免费观看视频| 亚洲精品无码久久毛片| 国产亚洲漂亮白嫩美女在线| 免费成人午夜视频| 久久免费香蕉视频| 亚洲午夜激情视频| 免费无码av片在线观看| 亚洲伦理一区二区| 59pao成国产成视频永久免费| 久久久亚洲裙底偷窥综合| 无码乱肉视频免费大全合集| 亚洲国产综合精品中文第一| 日韩在线a视频免费播放| 男女作爱免费网站| 国产亚洲成av人片在线观看| 久久精品人成免费| 亚洲熟妇无码av另类vr影视| 亚洲国产精品13p| 伊人久久大香线蕉免费视频| 亚洲成在人天堂一区二区| 国产精品久久久久免费a∨| 亚洲熟妇成人精品一区| 亚洲欧洲中文日韩av乱码| 日本免费在线中文字幕| 久久精品国产亚洲av麻豆图片| 日韩免费视频网站| 中文字幕久精品免费视频| 亚洲一区二区三区久久久久| 国产极品粉嫩泬免费观看| 国产一级婬片A视频免费观看| 亚洲白色白色在线播放| 国产麻豆剧传媒精品国产免费| 美女无遮挡拍拍拍免费视频| 亚洲精品美女久久久久| 国产做床爱无遮挡免费视频| 久久免费美女视频| 亚洲sm另类一区二区三区| 亚洲AV日韩AV永久无码绿巨人| 妞干网手机免费视频|