單例模式 多例模式 列舉 工廠模式

2021-10-06 21:31:21 字數 4564 閱讀 1988

1. 單例設計模式作用

讓乙個類,最最最最多只能有乙個物件
2. 單例設計模式實現步驟
a.構造方法私有化

b.我們要在類內部,建立乙個靜態的該類物件

c.我們要提供乙個靜態方法,使用者可以通過靜態方法獲取剛剛我們準備的那個物件

3 單例設計模式的型別
a.餓漢式單例:

編寫靜態物件時,直接通過new 類名(

)賦值b.懶漢式單例:

編寫靜態物件時,我們只定義物件,當使用者呼叫getinstance方法,在方法中再建立物件

4, 餓漢單例設計模式

public

class

dog/**

* 提供靜態方法,用於獲取dog物件

*/public

static dog getinstance()

}

5. 懶漢單例設計模式

public

class

dog/**

* 提供靜態方法,用於獲取dog物件

*/public

static dog getinstance()

return dd;

}}

1. 多例設計模式的作用
讓乙個類,只能有我們規定個數的物件
2. 多例設計模式的實現步驟
a.將構造方法私有化

b.定義乙個靜態變數,記錄需要的固定物件個數

c.定義乙個靜態集合,儲存固定個數的物件

d.在靜態**塊中建立固定個數物件並新增到集合

e.提供乙個對外的靜態方法用於獲取集合中的物件

3. 多例設計模式的**實現

public

class

cat// b.定義乙個靜態變數,記錄需要的固定物件個數

private

static

final

int count =5;

// c.定義乙個靜態集合,儲存固定個數的物件

private

static

final arraylist

list =

newarraylist

();// d.在靜態**塊中建立固定個數物件並新增到集合

static

}// e.提供乙個對外的靜態方法用於獲取集合中的物件

public

static cat getinstance()

}

1. 不使用列舉存在的問題
public

class

person

public

class

testpersondemo

}注意:不使用列舉,給性別賦值時只要是字串均可,和實際有衝突

2. 列舉的作用與應用場景

a.什麼是列舉:

就所有可能出現的結果,一一枚舉出來

b.應用場景:

比如:性別的結果只有三種,我們就可以列舉一一枚舉出來

3. 列舉的基本語法1.工廠模式概述
以前我們建立物件時,需要自己主動通過new關鍵字建立物件

現在我們可以直接通過工廠模式來獲取物件,建立物件的工作交給工廠

2.工廠模式作用
類與類之間實現解耦
3.工廠模式實現步驟
1.編寫乙個car介面, 提供run方法

2.編寫乙個falali類實現car介面,重寫run方法

3.編寫乙個benchi類實現car介面,重寫run方法

4.編寫乙個aotuo類實現car介面,重寫run方法

..5.提供乙個ca***ctory

(汽車工廠)

,獲取汽車物件的方法

6.測試一下汽車工廠類

4.工廠模式實現**

/**

* 汽車介面

*/public

inte***ce

car/**

* 法拉利汽車

*/public

class

falali

implements

car}

/** * 賓士汽車

*/public

class

benchi

implements

car}

/** * 奧迪汽車

*/public

class

aodi

implements

car}

/** * 奧拓汽車

*/public

class

aotuo

implements

car}

/** * 汽車工廠,提高獲取汽車的方法

*/public

class

ca***ctory

else

if(id ==2)

else

if(id ==3)

else}}

public

class

testcardemo

}

1.繼承

2.多型

3.api

(date,

"dateformat"

,calendar,math,system,arrays,collection,bigdecimal)

4.string的所有常用方法

trim()

;split

(string regex);.

...5和6

: 單列集合:

collection 根介面

|- list介面: 有序,有索引,可重複

|- arraylist: 底層採用陣列結構,增刪慢 查詢快

|- linkedlist: 底層採用連線結構,增刪快,查詢慢

|- set介面: 無序(linkedhashset除外)

,無索引,元素唯一

|- hashset 雜湊表(陣列+鍊錶+紅黑樹) 無序,無索引,元素唯一

|- linkedhashset 鏈式雜湊表(鍊錶+雜湊表) 有序,無索引,元素唯一

|- treeset 二叉樹 查詢速度非常恐怖!

! 並且是無序的(但是有自然順序)

雙列集合:

map介面

|- hashmap

|- linkedhashmap

|- treemap

注意: 如果要保證唯一元素的唯一性,必須重寫該元素的hashcode和equals方法

7.排序: 冒泡,選擇, 二分查詢法

異常: a.throwable --

> exception runtimeexception

b.throws 再次宣告丟擲 try

--catch 捕獲處理

c.自定義異常

8和9多執行緒

a.繼承方式和實現方法(使用匿名內部類實現)

b.執行緒同步**的三種方式(同步**塊,同步方法,lock鎖)

c.執行緒狀態(無限等待狀態)

-->吃包子和做包子

d.執行緒池

e.lambda以及stream流

10. file和遞迴

位元組流: outputstream,inputstream

字元流: writer,reader

11.其他流

緩衝流,轉換流.序列化流,列印流(commons-io工具類)

12.junit單元測試,網路程式設計中我們需要掌握tcp中的雙向通訊

13.nio和aio

同步和非同步

阻塞和非阻塞

14.反射註解

反射: a.獲取class物件 b.獲取構造並執行構造 c.獲取成員方法並呼叫成員方法

註解: a.註解格式以及屬性格式 b.註解使用@註解名(屬性名=屬性值)

c.註解的解析(了解) d.元註解(註解的註解@target

@retension

) 動態**: 了解

jdk8特性: 方法引用 (system.out:

:println)

15.xml和xml的dom解析

a.會根據dtd約束和schema約束編寫xml

(根據idea提示)

b.使用dom4j解析開發包

理論:dom解析,全部讀取,解析後返回乙個document物件

c.正規表示式:

"普通字串"

.match

("正則"

)"普通字串"

.split

("正則");

"普通字串"

.replaceall

("正則"

,"替換後的字串"

)16.單例(餓漢懶漢)

多例工廠

列舉: a.使用場景 b.列舉的格式 public

enum 列舉名

單例模式與多例模式

共同點 建構函式私有化 有什麼用?單例設計模式的特點 多例設計模式 多例設計模式和單例一樣都需要建構函式私有化,多例是根據不同的需求返回多個單例中的指定值。a code block public class message 餓漢式 class singletonhungry 構造方法私有化 publ...

設計模式(五) 單例 多例模式

單例模式 singleton 保證類僅有乙個例項,並且提供乙個訪問它的全域性訪問點。多例模式 multitude pattern 負責建立 管理自己的多個例項,並且提供它們的全域性訪問點。單例模式 多例模式 不好的實現方法一 public class singleton else return si...

Spring 單例模式和多例模式

singleton 單例 只有乙個共享的例項存在,所有對這個bean的請求都會返回這個唯一的例項。prototype 多例 對這個bean的每次請求都會建立乙個新的bean例項,類似於new。spring bean 預設是單例模式。單例測試 測試類user user1 user context.ge...