第一講 設計模式
1. 設計模式概述
設計模式(
design pattern
)是一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。使用設計模式是為了可重用**、讓**更容易被他人理解、保證**可靠性。
2.
物件導向思想設計原則
在實際的開發中,我們要想更深入的了解物件導向思想,就必須熟悉前人總結過的物件導向的思想的設計原則
單一職責原則:「高內聚,低耦合」,每個類只有乙個職責,對外只提供一種功能
開閉原則:乙個物件對擴充套件開放,對修改關閉,增加**,而不是修改原來的**
黎克特制替換原則:在任何父類出現的地方都可以用子類替代
依賴注入原則:要依賴於抽象,不要依賴於具體實現
介面分離原則:不應該強迫程式依賴於它們不需要使用的方法
迪公尺特原則:乙個物件應該對其他物件盡可能少的了解
根據這些原則,前人總結出一些比較好的設計模式
3.
簡單工廠設計模式
又叫靜態工廠方法模式,它定義乙個具體的工廠類負責建立一些類的例項 優點
客戶端不需要在負責物件的建立,從而明確了各個類的職責 缺點
這個靜態工廠類負責所有物件的建立,如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護
首先創造兩種動物,dog和cat,都繼承於animal
貓:
public class cat extends animal
}
狗:
public class dog extends animal
建立動物工廠類,生產狗和貓
public class animalfactory
public static animal createanimal(string type) else if("cat".equals(type)) else
}}
由animalfactory的靜態方法createanimal直接建立動物
測試:
public class animaldemo else
}}
4.
工廠方法模式
工廠方法模式中抽象工廠類負責定義建立物件的介面,具體物件的建立工作由繼承抽象工廠的具體類實現。 優點
客戶端不需要在負責物件的建立,從而明確了各個類的職責,如果有新的物件增加,只需要增加乙個具體的類和具體的工廠類即可,不影響已有的**,後期維護容易,增強了系統的擴充套件性 缺點
需要額外的編寫**,增加了工作量
抽象工廠介面
public inte***ce factory
貓工廠類
public class catfactory implements factory
測試類
public class animaldemo
}
這樣的情況更加體現出「低耦合」,從測試類中不會看到其他類的過多資訊
5.
單例設計模式
單例模式就是要確保類在記憶體中只有乙個物件,該例項必須自動建立,並且對外提供 優點
在系統記憶體中只存在乙個物件,因此可以節約系統資源,對於一些需要頻繁建立和銷毀的物件單例模式無疑可以提高系統的效能。 缺點
沒有抽象層,因此擴充套件很難。
職責過重,在一定程式上違背了單一職責
單例模式:保證類在記憶體中只有乙個物件。
如何保證類在記憶體中只有乙個物件呢?
a:把構造方法私有 b:
在成員位置自己建立乙個物件 c:
通過乙個公共的方法提供訪問
單例模式:
餓漢式:類一載入就建立物件
懶漢式:用的時候,才去建立物件
餓漢式:將構造方法設為私有,禁止建立物件
public class student
// 自己造乙個
// 靜態方法只能訪問靜態成員變數,加靜態
// 為了不讓外界直接訪問修改這個值,加private
private static student s = new student();
// 提供公共的訪問方式
// 為了保證外界能夠直接使用該方法,加靜態
public static student getstudent()
}
懶漢式:
public class teacher
private static teacher t = null;
public synchronized static teacher getteacher()
return t;
}}
6. 模版設計模式概述
模版方法模式就是定義乙個演算法的骨架,而將具體的演算法延遲到子類中來實現
優點使用模版方法模式,在定義演算法骨架的同時,可以很靈活的實現具體的演算法,滿足使用者靈活多變的需求
缺點如果演算法骨架有修改的話,則需要修改抽象類
7. 裝飾設計模式概述
裝飾模式就是使用被裝飾類的乙個子類的例項,在客戶端將這個子類的例項交給裝飾類。是繼承的替代方案
優點使用裝飾模式,可以提供比繼承更靈活的擴充套件物件的功能,它可以動態的新增物件的功能,並且可以隨意的組合這些功能
缺點正因為可以隨意組合,所以就可能出現一些不合理的邏輯
8. 介面卡設計模式概述
將乙個類的介面轉換成另外乙個客戶希望的介面。從而使原來不能直接呼叫的介面變的可以呼叫。
優點讓本來不適合使用的介面變得適合使用
缺點一次只能適配乙個類,使用有一定的侷限性
黑馬程式設計師 設計模式
一 設計模式概述 1 設計模式概念 我們專案中有很多相同的東西,我們把這些相同的東西抽取出來 符合某種規則,這個稱為設計模式。二 簡單工廠模式 1 如果有寫完乙個類不想讓其他人建立這個類的物件怎麼辦?第一種把構造私有化 第二種定義抽象類 2 物件導向的設計原則?對修改關閉,對擴充套件開放 三 工廠方...
黑馬程式設計師 單例設計模式
asp.net android io開發s net培訓 期待與您交流!設計要求 1.只能被例項化一次。2.由自己建立例項。3.能向該類任意引用提供上述例項。方式一 餓漢式 class single public static single getinstance 方式二 懶漢式 class sing...
黑馬程式設計師 單例設計模式
asp.net android ios開發 net培訓 期待與您交流!單例設計模式 解決乙個類在記憶體中只存在乙個物件。想要保證物件唯一。1,為了避免其他程式過多建立該類物件。先禁止其他程式建立該類物件 2,還為了讓其他程式可以訪問到該類物件,只好在本類中,自定義乙個物件 3,為了方便其他程式對自定...