單例設計模式 列舉

2021-09-19 04:21:00 字數 3910 閱讀 5157

設計模式:

是一套被反覆使用、多數人知曉的、經過分類的、**設計經驗的總結

套路 模式

前人已經經過大量測試得出的設計模式

使用設計模式的好處:提高**的可重用性與可靠性。

單例設計模式 :

單個例項 == 》單個物件 意味著只能建立乙個物件,就好電腦的任務管理器,只能有乙個視窗。

單例設計模式:

① 私有構造方法

② 對外提供乙個物件,供其他的類訪問,但是該物件需要封裝,通過 private 私有,提供 getter 方法。

③ 必須通過 static 進行類名呼叫。

單例設計模式的常用形式:

① 餓漢式

② 懶漢式

注意 : 懶漢式在理論上是優於餓漢式的,但是在開發中,往往使用的是餓漢式,儘管餓漢式的資源消耗大,但是

懶漢式有執行緒安全問題,比較來說,餓漢式使用效果優

餓漢式單例設計模式:

**示例:

1 package demolist;

2 3 public class demo10

9 }10 class hungryman

13 private static hungryman instance=new hungryman();

14 public static hungryman getinstance()

17 }

懶漢式單例設計模式:

**示例:

1 package demolist;

2 3 public class demo11

9 }10 class foolman

14 private static foolman instance=null; //注意這裡,只有當確定呼叫getinstance()方法時才會去建立物件。

15 public static foolman getinstance()

19 return instance;

20 }

21 }

單例設計模式總的**示例:

1 public class  單例設計模式 

12 }

13 // 單例設計模式 -- 餓漢式

14 class singleton

18 //2. 為外界提供乙個物件

19 private static singleton instance=new singleton();//int a=5;

20 //3. 將對外提供的物件,封裝,私有的屬性共有的方法,對外提供 getter 方法,讓其他類可以獲取該物件

21 // 4. 為了能夠使用類名進行呼叫,使用 static 進行修飾

22 public static singleton getinstance()

25 }

26 // 單例設計模式 -- 懶漢式

27 class singleton1

32 //2. 為外界提供乙個物件

33 private static singleton1 instance=null;//

34 //3. 將對外提供的物件,封裝,私有的屬性共有的方法,對外提供 getter 方法,讓其他類可以獲取該物件

35 // 4. 為了能夠使用類名進行呼叫,使用 static 進行修飾

36 public static singleton1 getinstance()

41 return instance;

42 }

43 public static void fun() {}

44 }

列舉:

. 列舉: 有限個數值 / 物件。

2. 性別 , 星期,交通燈,季節

3. 一般的類來模擬列舉類的實現。 ( 季節來模擬 )

①. 格式 :

關鍵字 enum 該關鍵字表示列舉類。

②. 列舉類中物件寫在第一行。並且多個列舉物件之間用逗號隔開,最後乙個跟分號 , 並且列舉物件一般用大寫

。③. 列舉類實質還是乙個類,類的特性它都有:

類的成員。屬性 方法 構造方法 抽象方法

**示例:

1 public static void main(string args) 

8 }9 // 列舉類

10 enum seasone

18 },summer(" 夏季 ")

23 },autumn(" 秋季 ")

28 },winter(" 冬季 ")

33 };

34 string desc;

35 public void fun()

38 // 構造方法 必須被私有

39 /*private seasone() */

41 private seasone(string desc)

44 // 抽象方法 描述不同季節的特徵

45 public abstract void display();

46 }

47 class a

列舉應用之交通燈:

**示例:

1 public class  交通燈描述交通行為 */

18 //switch 的小括號的資料型別 可以是 byte short char -- 》 int 在 1.7jdk 之後 string 。 enum 列舉類也支

19 持

20 trlight t=trlight.valueof(sc.next().touppercase());

21 switch(t)

26 //name 列舉物件的常量名稱

27 /*system.out.println(trlight.red.name());

28 //ordinal 列舉物件的序號,從 0 開始

29 system.out.println(trlight.green.ordinal());

30 //tostring() 列舉物件的常量名稱

31 system.out.println(trlight.yellow.tostring());*/

32 //valueof(name) 根據 name 返回列舉類的常量物件

33 // system.out.println(trlight.valueof("red"));

34 }

35 }

36 // 列舉類 格式 : enum 列舉類的名稱

37 enum trlight

44 },green

49 },yellow

54 };

55 // 不同燈亮起時的行為

56 public abstract void action();

57 }

網路程式設計:

網路 :在不同的地域,通過終端裝置 ( 台式電腦,筆記本, pad) 和傳輸裝置 ( 路由器,交換機,網線 ) 進行連線的網狀結

構。網路的目的:

資源共享。

網路三要素 :

① ip :分配給網際網路上的每台計算機的唯一位址。

1 》 ipv4:32 位 ,每 8 位換算成乙個十進位制。

點分十進位制 : 255.255.255.255

分為 a-e 五類位址。

**① 127.0.0.1 /localhost 本地回環位址 代表本機位址。

2 》 ipv6: 128 位,

冒分十六進製制: abcd:ef01:2345:6789:abcd:ef01:2345:6789

3 》本機 ip 的檢視: ipconfig

② 埠號: 0-65535 之間。

用來區分同一臺計算機上不同的軟體的。建議自定義的埠號從 8000 往後

。③ 協議:網際網路之間進行通訊的規則。

單例模式之列舉單例

列舉也是餓漢式。列舉單例 問題1 列舉單例是如何限制例項個數的 反編譯後可以看到 就是我們列舉類的乙個靜態成員變數而已,單例項的 問題2 列舉單例在建立時是否有併發問題 沒有,因為它也是靜態成員變數,它的執行緒安全性也是在類載入階段完成的。那個時候不會有執行緒併發問題 問題3 列舉單例能否被反射破壞...

設計模式 單例模式(列舉,強烈推薦)

通過列舉實現單例模式 最佳的單例實現模式就是列舉模式。利用列舉的特性,讓jvm來幫我們保證執行緒安全和單一例項的問題。除此之外,寫法還特別簡單。還可以規避可能還存在反射攻擊或者反序列化攻擊,完全保證單例模式 示例和注釋 單例模式 列舉方式 1.建乙個列舉類 public class singleto...

單例模式以及列舉

相同點 同樣是類中有固定的物件個數 不同點 單例模式只有乙個物件,列舉是有限個物件,但物件只有乙個時,也可以叫做單例模式 單例模式有七種實現方式,但本質上是讓讓類只能建立乙個物件,為了保證這個,只能在類內部建立物件,而在類外部外部無法建立,所以構造器是空的 給出兩種實現方式 餓漢式 提前建立好物件 ...