• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            7種設計壞味道和11種原則 [轉]

            Posted on 2009-02-24 11:02 S.l.e!ep.¢% 閱讀(480) 評論(0)  編輯 收藏 引用 所屬分類: Design Pattern

            7種設計壞味道
            1.僵化性: 很難對系統進行改動,因為每個改動都會迫使許多對系統其他部分的其它改動。

            2.脆弱性: 對系統的改動會導致系統中和改動的地方在概念上無關的許多地方出現問題。

            3.牢固性: 很難解開系統的糾結,使之成為一些可在其他系統中重用的組件。

            4.粘滯性: 做正確的事情比做錯誤的事情要困難。

            5.復雜性(不必要的): 設計中包含有不具任何直接好處的基礎結構。

            6.重復性(不必要的): 設計中包含有重復的結構,而該重復的結構本可以使用單一的抽象進行統一。

            ? 7.晦澀性: 很難閱讀、理解。沒有很好地表現出意圖。

            11種原則 - Principle

            ----類原則

            1.單一職責原則 - Single Responsibility Principle(SRP)

            就一個類而言,應該僅有一個引起它變化的原因。

            (職責即為變化的原因。)

            2.開放-封閉原則 - Open Close Principle(OCP)

            軟件實體(類、模塊、函數等)應該是可以擴展的,但是不可修改。

            (對于擴展是開放的,對于更改是封閉的.

            關鍵是抽象.將一個功能的通用部分和實現細節部分清晰的分離開來.

            開發人員應該僅僅對程序中呈現出頻繁變化的那些部分作出抽象.

            拒絕不成熟的抽象和抽象本身一樣重要. )

            3.里氏替換原則 - Liskov Substitution Principle(LSP)

            子類型(subclass)必須能夠替換掉它們的基類型(superclass)。

            4.依賴倒置原則(IoCP) 或 依賴注入原則 - Dependence Inversion Principle(DIP)

            抽象不應該依賴于細節。細節應該依賴于抽象。

            (Hollywood原則: "Don't call us, we'll call you".

            程序中所有的依賴關系都應該終止于抽象類和接口。

            針對接口而非實現編程。

            任何變量都不應該持有一個指向具體類的指針或引用。

            任何類都不應該從具體類派生。

            任何方法都不應該覆寫他的任何基類中的已經實現了的方法。)

            5.接口隔離原則(ISP)

            不應該強迫客戶依賴于它們不用的方法。

            接口屬于客戶,不屬于它所在的類層次結構。

            (多個面向特定用戶的接口勝于一個通用接口。)

            ----包內聚原則

            6.重用發布等價原則(REP)

            重用的粒度就是發布的粒度。

            7.共同封閉原則(CCP)

            包中的所有類對于同一類性質的變化應該是共同封閉的。

            一個變化若對一個包產生影響,

            則將對該包中的所有類產生影響,

            而對于其他的包不造成任何影響。

            8.共同重用原則(CRP)

            一個包中的所有類應該是共同重用的。

            如果重用了包中的一個類,

            那么就要重用包中的所有類。

            (相互之間沒有緊密聯系的類不應該在同一個包中。)

            ----包耦合原則

            9.無環依賴原則(ADP)

            在包的依賴關系圖中不允許存在環。

            10.穩定依賴原則(SDP)

            朝著穩定的方向進行依賴。

            應該把封裝系統高層設計的軟件(比如抽象類)放進穩定的包中,

            不穩定的包中應該只包含那些很可能會改變的軟件(比如具體類)。

            11.穩定抽象原則(SAP)

            包的抽象程度應該和其穩定程度一致。

            (一個穩定的包應該也是抽象的,一個不穩定的包應該是抽象的. )

            ----其它擴展原則----

            12.BBP(Black Box Principle)黑盒原則

            多用類的聚合,少用類的繼承。

            13.DAP(Default Abstraction Principle)缺省抽象原則

            在接口和實現接口的類之間引入一個抽象類,這個類實現了接口的大部分操作.

            14.IDP(Interface Design Principle)接口設計原則

            規劃一個接口而不是實現一個接口。

            15.DCSP(Don't Concrete Supperclass Principle)不要構造具體的超類原則

            避免維護具體的超類。

            16.迪米特法則

            一個類只依賴其觸手可得的類。
            久久久久国产亚洲AV麻豆| 久久福利青草精品资源站| 亚洲国产精品成人久久蜜臀 | 99久久免费国产特黄| 国产精品9999久久久久| 久久国产精品二国产精品| 久久久国产打桩机| 亚洲综合精品香蕉久久网97| 久久强奷乱码老熟女网站| 久久天天躁狠狠躁夜夜avapp | 久久AⅤ人妻少妇嫩草影院| 99久久国产亚洲综合精品| 成人久久综合网| 久久丫忘忧草产品| 久久久久久久国产免费看| 97精品国产91久久久久久| 色老头网站久久网| 国产精品成人99久久久久 | 久久综合狠狠综合久久激情 | 99久久人妻无码精品系列| 一极黄色视频久久网站| 93精91精品国产综合久久香蕉| 亚洲中文久久精品无码ww16| 久久人人爽人人爽人人片AV麻豆 | 久久久久久无码国产精品中文字幕 | 91精品婷婷国产综合久久| 久久成人国产精品免费软件| 久久香蕉超碰97国产精品| 久久无码高潮喷水| 亚洲成av人片不卡无码久久| 国产精品欧美久久久久天天影视| 久久99久久99精品免视看动漫| 亚洲午夜无码AV毛片久久| 日日狠狠久久偷偷色综合0| 久久激情亚洲精品无码?V| 成人午夜精品久久久久久久小说| 狠色狠色狠狠色综合久久| 久久亚洲欧美日本精品| 2021国产成人精品久久| 99久久成人18免费网站| 久久精品夜色噜噜亚洲A∨|