Java設計模式

2021-08-20 09:40:36 字數 2855 閱讀 4001

設計原則:

1>單一職責原則

:低耦合,高內聚

耦合性:類與類之間產生的關係

低耦合:讓類與類之間的關係不複雜

內聚:執行乙個件事情(功能

)的能力

高內聚:乙個類能夠完成的事情

,不要使用多個類一起來執行

!2>:開閉原則

核心思想是:乙個物件對擴充套件開放,對修改關閉

開發好乙個程式(專案

),盡量不要修改原有**

類和類之間假設有關係

更改乙個類的功能,其他類已需要更改

(增加**的**的書寫量

)設計模式分類:

建立型模式

物件的建立

結構型模式

物件的組成(結構

)行為型模式

物件的行為

簡單工廠模式--->靜態工廠方法模式

優點:不需要在建立具體類的物件

,而是把建立的工作交給了工廠類來建立

!弊端:如果有新的物件增加,或者某些物件的建立方式不同,就需要不斷的修改工廠類,不利於後期的維護

簡單工廠模式的**:

建立抽象動物類和它的子實現類

package org.westos_01;

//動物工廠類

public class animalfactory

//想辦法用多型的形式解決:**擴充套件性

public static animal createanimal(string type) else if("dog".equals(type))

return null;}}

package org.westos_01;

public class animaldemo else

}}

工廠方法模式

提供乙個抽象類(抽象工廠

)還需要提供乙個介面

(工廠介面

),每乙個具體的類都有對應的工廠類

(實現工廠介面

)具體物件的建立工作由繼承抽象工廠的具體類實現

優點:客戶端不需要在負責物件的建立(不需顯示建立具體物件

),從而明確了各個類的職責,

如果有新的物件增加,只需要增加乙個具體的類和具體的工廠類即可,不影響已有的**,後期維護容易,增強了系統的擴充套件性

弊端:書寫**量大了!

設計模式之單例模式

單例模式核心思想:某些類的物件在建立的時候

,在系統記憶體始終只有乙個物件

!單例模式分類:

1) 餓漢式

2) 2)懶漢式

(類似於多執行緒環境

..)餓漢式:

在載入那個類的時候,物件的建立工作就已經完成了

!兩種分類在設計上幾乎一樣:

1)定義個類

,將該類的無參構造方法私有化

2)在該類的成員位置建立該類物件 並且一定要私有化

,防止外界更改這個物件

3)在該類中提供靜態成員方法

(返回值就是建立的那個物件

),能被當前類直接呼叫

,static

修飾餓漢式在類建立的同時就已經建立好乙個靜態的物件供系統使用,以後不再改變,所以天生是執行緒安全的。

package org.westos_03;

//學生類

public class student

//成員位置建立該類的例項,載入類的時候就建立了物件

private static student s = new student() ; //靜態的類變數

//提供乙個公共的成員方法

public static student getstudent()

}package org.westos_03;

public class studentdemo

}

懶漢式:

符合單例模式核心思想

1)自定義乙個類

,將無參構造私有化

2)在成員位置宣告變數(只是宣告,沒有建立物件)

3)提供公共靜態功能

,在裡面判斷的建立該類物件

,返回該類物件

package org.westos_04;

public class teacher

//在成員位置宣告變數

//私有化,並且

private static teacher t = null ;

//提供公共的靜態功能

//靜態的同步方法 (鎖物件: 類名.class)

public synchronized static teacher getteacher()

return t ;}}

package org.westos_04;

public class teacherdemo

}

餓漢式和懶漢式區別

a.初始化時間不同

餓漢就是類一旦載入,就把單例初始化完成,保證getinstance的時候,單例是已經存在的了,

而懶漢比較懶,只有當呼叫getinstance的時候,才回去初始化這個單例。

b、執行緒安全:

餓漢式天生就是執行緒安全的,可以直接用於多執行緒而不會出現問題,

懶漢式本身是非執行緒安全的,

需要用同步機制解決這個問題

。c、資源載入和效能:

餓漢式在類建立的同時就例項化乙個靜態物件出來,不管之後會不會使用這個單例,都會佔據一定的記憶體,但是相應的,在第一次呼叫時速度也會更快,因為其資源已經初始化完成,

而懶漢式顧名思義,會延遲載入,在第一次使用該單例的時候才會例項化物件出來,第一次呼叫時要做初始化,如果要做的工作比較多,效能上會有些延遲,之後就和餓漢式一樣了。

java設計模式

a categorization of patterns by intent intent patterns inte ces adapter,facade,composite,bridge responsibility singleton,observer,mediator,proxy,chain...

JAVA設計模式

設計模式 設計模式分類 設計模式分為三類,建立型模式,結構型模式,行為型模式 建立型模式 1 工廠方法模式 2 抽象工廠模式 3 單例模式 4 建造者模式 5 原型模式 結構型模式 1 介面卡模式 2 裝飾器模式 3 模式 4 外觀模式 5 橋接模式 6 組合模式 7 享元模式 行為型模式 1 策略...

JAVA設計模式

介面卡模式 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本不相容的類可以合作無間。外觀模式 提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演...