• <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>

            EverSpring working shop

            To pursue creative ideas based on nature.

            統(tǒng)計(jì)

            留言簿(1)

            他山之石

            閱讀排行榜

            評(píng)論排行榜

            原則,模式,壞的范例

            (一)7種設(shè)計(jì)壞味道
            1.僵化性: 很難對(duì)系統(tǒng)進(jìn)行改動(dòng),因?yàn)槊總€(gè)改動(dòng)都會(huì)迫使許多對(duì)系統(tǒng)其他部分的其它改動(dòng)。
            2.脆弱性: 對(duì)系統(tǒng)的改動(dòng)會(huì)導(dǎo)致系統(tǒng)中和改動(dòng)的地方在概念上無(wú)關(guān)的許多地方出現(xiàn)問(wèn)題。
            3.牢固性: 很難解開(kāi)系統(tǒng)的糾結(jié),使之成為一些可在其他系統(tǒng)中重用的組件。
            4.粘滯性: 做正確的事情比做錯(cuò)誤的事情要困難。
            5.復(fù)雜性(不必要的): 設(shè)計(jì)中包含有不具任何直接好處的基礎(chǔ)結(jié)構(gòu)。
            6.重復(fù)性(不必要的): 設(shè)計(jì)中包含有重復(fù)的結(jié)構(gòu),而該重復(fù)的結(jié)構(gòu)本可以使用單一的抽象進(jìn)行統(tǒng)一。
            7.晦澀性: 很難閱讀、理解。沒(méi)有很好地表現(xiàn)出意圖。

            (二)11種原則 - Principle

            ----類(lèi)原則
            1.單一職責(zé)原則 - Single Responsibility Principle(SRP)
            就一個(gè)類(lèi)而言,應(yīng)該僅有一個(gè)引起它變化的原因。
            (職責(zé)即為“變化的原因”。)
            2.開(kāi)放-封閉原則 - Open Close Principle(OCP)
            軟件實(shí)體(類(lèi)、模塊、函數(shù)等)應(yīng)該是可以擴(kuò)展的,但是不可修改。
            (對(duì)于擴(kuò)展是開(kāi)放的,對(duì)于更改是封閉的.
            關(guān)鍵是抽象.將一個(gè)功能的通用部分和實(shí)現(xiàn)細(xì)節(jié)部分清晰的分離開(kāi)來(lái).
            開(kāi)發(fā)人員應(yīng)該僅僅對(duì)程序中呈現(xiàn)出頻繁變化的那些部分作出抽象.
            拒絕不成熟的抽象和抽象本身一樣重要. )
            3.里氏替換原則 - Liskov Substitution Principle(LSP)
            子類(lèi)型(subclass)必須能夠替換掉它們的基類(lèi)型(superclass)。
            4.依賴倒置原則(IoCP) 或 依賴注入原則 - Dependence Inversion Principle(DIP)
            抽象不應(yīng)該依賴于細(xì)節(jié)。細(xì)節(jié)應(yīng)該依賴于抽象。
            (Hollywood原則: "Don't call us, we'll call you".
            程序中所有的依賴關(guān)系都應(yīng)該終止于抽象類(lèi)和接口。
            針對(duì)接口而非實(shí)現(xiàn)編程。
            任何變量都不應(yīng)該持有一個(gè)指向具體類(lèi)的指針或引用。
            任何類(lèi)都不應(yīng)該從具體類(lèi)派生。
            任何方法都不應(yīng)該覆寫(xiě)他的任何基類(lèi)中的已經(jīng)實(shí)現(xiàn)了的方法。)
            5.接口隔離原則(ISP)
            不應(yīng)該強(qiáng)迫客戶依賴于它們不用的方法。
            接口屬于客戶,不屬于它所在的類(lèi)層次結(jié)構(gòu)。
            (多個(gè)面向特定用戶的接口勝于一個(gè)通用接口。)
            ----包內(nèi)聚原則
            6.重用發(fā)布等價(jià)原則(REP)
            重用的粒度就是發(fā)布的粒度。
            7.共同封閉原則(CCP)
            包中的所有類(lèi)對(duì)于同一類(lèi)性質(zhì)的變化應(yīng)該是共同封閉的。
            一個(gè)變化若對(duì)一個(gè)包產(chǎn)生影響,
            則將對(duì)該包中的所有類(lèi)產(chǎn)生影響,
            而對(duì)于其他的包不造成任何影響。
            8.共同重用原則(CRP)
            一個(gè)包中的所有類(lèi)應(yīng)該是共同重用的。
            如果重用了包中的一個(gè)類(lèi),
            那么就要重用包中的所有類(lèi)。
            (相互之間沒(méi)有緊密聯(lián)系的類(lèi)不應(yīng)該在同一個(gè)包中。)
            ----包耦合原則
            9.無(wú)環(huán)依賴原則(ADP)
            在包的依賴關(guān)系圖中不允許存在環(huán)。
            10.穩(wěn)定依賴原則(SDP)
            朝著穩(wěn)定的方向進(jìn)行依賴。
            應(yīng)該把封裝系統(tǒng)高層設(shè)計(jì)的軟件(比如抽象類(lèi))放進(jìn)穩(wěn)定的包中,
            不穩(wěn)定的包中應(yīng)該只包含那些很可能會(huì)改變的軟件(比如具體類(lèi))。
            11.穩(wěn)定抽象原則(SAP)
            包的抽象程度應(yīng)該和其穩(wěn)定程度一致。
            (一個(gè)穩(wěn)定的包應(yīng)該也是抽象的,一個(gè)不穩(wěn)定的包應(yīng)該是抽象的. )
            ----其它擴(kuò)展原則----
            12.BBP(Black Box Principle)黑盒原則
            多用類(lèi)的聚合,少用類(lèi)的繼承。
            13.DAP(Default Abstraction Principle)缺省抽象原則
            在接口和實(shí)現(xiàn)接口的類(lèi)之間引入一個(gè)抽象類(lèi),這個(gè)類(lèi)實(shí)現(xiàn)了接口的大部分操作.
            14.IDP(Interface Design Principle)接口設(shè)計(jì)原則
            規(guī)劃一個(gè)接口而不是實(shí)現(xiàn)一個(gè)接口。
            15.DCSP(Don't Concrete Supperclass Principle)不要構(gòu)造具體的超類(lèi)原則
            避免維護(hù)具體的超類(lèi)。
            16.迪米特法則
            一個(gè)類(lèi)只依賴其觸手可得的類(lèi)。

            (三)23種設(shè)計(jì)模式 - Pattern

            創(chuàng)建型
            Abstract Factory(抽象工廠模式) -> (簡(jiǎn)單工廠模式)
            Factory Method(工廠模式)
            Builder(生成器模式)
            Singleton(單件模式) -> (多例模式)
            Prototype(原型模式)
            結(jié)構(gòu)型
            Adapter(適配器模式)
            Bridge(橋接模式)
            Composite(組合模式)
            Decorator(裝飾模式)
            Facade(外觀模式,門(mén)面模式)
            Flyweight(享元模式) -> (不變模式)
            Proxy(代理模式)
            行為型
            Chain of Responsibility(職責(zé)鏈模式)
            Command(命令模式)
            Interpreter(解釋器模式)
            Iteartor(迭代器模式)
            Mediator(中介者模式)
            Memento(備忘錄模式)
            Observer(觀察者模式)
            State(狀態(tài)模式)
            Strategy(策略模式)
            TemplateMethod(模板方法模式)
            Visitor(訪問(wèn)者模式)

            posted on 2008-03-31 21:26 everspring79 閱讀(93) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品这里只有精99品| 精品无码久久久久久久久久| 国产精品欧美亚洲韩国日本久久| 精品久久久久久国产三级| 亚洲精品无码久久久| 97久久综合精品久久久综合| 丁香五月网久久综合| 国产99久久九九精品无码| 亚洲伊人久久精品影院| 99久久免费国产精精品| 久久精品二区| 91久久婷婷国产综合精品青草| 亚洲精品97久久中文字幕无码| 狠狠久久亚洲欧美专区| 99久久国产主播综合精品| 色综合合久久天天给综看| 婷婷伊人久久大香线蕉AV | 久久久久久久人妻无码中文字幕爆 | 日韩精品久久无码人妻中文字幕 | 国产精品99久久久精品无码 | 久久久久亚洲精品日久生情 | 久久人人爽人人爽人人片AV不| 婷婷久久综合| 国产精品久久久久影院色| 亚洲乱码精品久久久久..| 亚洲精品高清久久| 无码久久精品国产亚洲Av影片 | 亚洲国产一成人久久精品| 精品国产91久久久久久久a| 久久香综合精品久久伊人| 亚洲国产一成久久精品国产成人综合 | 色诱久久av| 欧美大战日韩91综合一区婷婷久久青草 | 国产精品久久久久AV福利动漫| 少妇久久久久久被弄高潮| 久久久精品波多野结衣| 久久性生大片免费观看性| 99久久国产综合精品五月天喷水| 天天综合久久久网| 日本精品久久久久影院日本 | 久久精品国产99久久久|