6 個設計原則分別是什么?每種設計原則體現的設計模式是哪個?


參考博客:http://www.cnblogs.com/zuoxiaolong/p/pattern1.html


設計模式中的6個設計原則分別是:

  1.單一職責原則(六大規則中的小蘿莉,人見人愛)描述的意思是每個類都只負責單一的功能,切不可太多,並且一個類應當盡量的把一個功能做到極致

  2.里氏替換原則(六大原則中最文靜的姑娘,但卻不太招人喜歡)這個原則表達的意思是一個子類應該可以替換掉父類並且可以正常工作

  3. 接口隔離原則(六大原則當中最挑三揀四的挑剔女,胸部極小)也稱接口最小化原則,強調的是一個接口擁有的行為應該盡可能的小

  4. 依賴倒置原則(六大原則中最小鳥依人的姑娘,對抽象的東西非常依賴)這個原則描述的是高層模塊不該依賴於低層模塊,二者都應該依賴於抽象,抽象不應該依賴於細節,細節應該依賴於抽象

  5.迪米特原則(六大原則中最害羞的姑娘,不太愛和陌生人說話)也稱最小知道原則,即一個類應該盡量不要知道其他類太多的東西,不要和陌生的類有太多接觸

  6.開-閉原則(六大原則中絕對的大姐大,另外五姐妹心甘情願臣服)最后一個原則,一句話,對修改關閉,對擴展開放

23種設計模式:

  1.工廠方法模式

    

    工廠方法模式的UML結構圖:

 

         

 

        Product:抽象產品。所有的產品必須實現這個共同的接口,這樣一來,使用這些產品的類既可以引用這個接口。而不是具體類。

 

        ConcreteProduct:具體產品。

 

        Creator:抽象工廠。它實現了所有操縱產品的方法,但不實現工廠方法。Creator所有的子類都必須要實現factoryMethod()方法。

 

        ConcreteCreator:具體工廠。制造產品的實際工廠。它負責創建一個或者多個具體產品,只有ConcreteCreator類知道如何創建這些產品。

 

        工廠方法模式是簡單工廠模式的延伸。在工廠方法模式中,核心工廠類不在負責產品的創建,而是將具體的創建工作交給子類去完成。也就是后所這個核心工廠僅僅只是提供創建的接口,具體實現方法交給繼承它的子類去完成。當我們的系統需要增加其他新的對象時,我們只需要添加一個具體的產品和它的創建工廠即可,不需要對原工廠進行任何修改,這樣很好地符合了“開閉原則”。

 2.抽象工廠模式

在工廠方法模式中,我們使用一個工廠創建一個產品,也就是說一個具體的工廠對應一個具體的產品。但是有時候我們需要一個工廠能夠提供多個產品對象,而不是單一的對象,這個時候我們就需要使用抽象工廠模式。

        在講解抽象工廠模式之前,我們需要厘清兩個概念:

        產品等級結構。產品的等級結構也就是產品的繼承結構。例如一個為空調的抽象類,它有海爾空調、格力空調、美的空調等一系列的子類,那么這個抽象類空調和他的子類就構成了一個產品等級結構。

        產品族。產品族是在抽象工廠模式中的。在抽象工廠模式中,產品族是指由同一個工廠生產的,位於不同產品等級結構中的一組產品。比如,海爾工廠生產海爾空調。海爾冰箱,那么海爾空調則位於空調產品族中。

        產品等級結構和產品族結構示意圖如下:

        一、基本定義                                                                                                                                                                                                          

        抽象工廠模式提供一個接口,用於創建相關或者依賴對象的家族,而不需要明確指定具體類。

        抽象工廠允許客戶端使用抽象的接口來創建一組相關的產品,而不需要關系實際產出的具體產品是什么。這樣一來,客戶就可以從具體的產品中被解耦。

 

        二、模式結構                                                                                                                                                                                                              

        抽象工廠模式的UML結構圖如下:

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM