直播軟體搭建,Java設計模式單例模式
直播軟體搭建,Java設計模式單例模式
1.單例模式的例子
根據單例模式的特徵,現在來寫一下程式碼。
1.只有一個例項。那麼就是得把例項作為該類的屬性同時需要用static表示其,用private來體現一下封裝更美觀。
2.建立類的物件需要有構造器吧,因為只能有一個例項,也就是說外部不能建立這個類的物件,所以構造器必須私有化。
3.這個物件是私有的就必須提供許可權為public的方法獲取。
示例一:餓漢式
public class Order { private static Order instance = new Order(); private Order() {} public static Order getInstance() { return instance; } }
現在其實就完成了單例模式的程式碼了。Order類只有一個例項就是instance。但其實單例模式有兩種寫法。上面這種叫做餓漢式。還有一種叫懶漢式。下面寫一下懶漢式。
示例二:懶漢式
public class Order { private static Order instance = null; private Order() {} public static Order getInstance() { if (instance == null) { instance = new Order(); } return instance; } }
2.解決
為解決這個問題,就需要為getInstance方法加鎖。阻止執行緒1呼叫getInstace方法時,其他執行緒也呼叫getInstance。簡單說一下加鎖,就是限制對共享資料的操作,使用synchronized把對共享資料的操作包起來。使得執行緒1執行完操作共享資料後,執行緒2才可以執行(學完多執行緒更能明白)
加鎖方式有五種
// 法一 直接枷鎖 public static synchronized Order getInstance() { // 這種其實也是Order類物件加鎖 if (instance == null) { instance = new Order(); } return instance; } // 法二 public static Order getInstance() { synchronized(Order.class) { // 用Order類物件加鎖 if (instance == null) { instance = new Order(); } return instance; } } // 法三 只是效率比前兩者更高 public static Order getInstance() { if (instance == null) { // 也是Order類物件加鎖 synchronized(Order.class) { if (instance == null) { instance = new Order(); } } } return instance; } // 法四 靜態內部載入 public class Order { private static class Order() { private static Order instance = new Order(); } private Order(){} public static Order getInsatnce() { return Order.instance; } } // 法五 列舉方法 public enum Order { INSTANCE; // INSTANCE就是Order的單例 public void doSomething() { // 要做的事情 } }
以上就是 直播軟體搭建,Java設計模式單例模式,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2952394/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java設計模式【單例模式】Java設計模式單例
- Java設計模式 | 單例模式Java設計模式單例
- Java設計模式——單例模式Java設計模式單例
- Java設計模式–單例模式Java設計模式單例
- Java設計模式-單例模式Java設計模式單例
- Java設計模式--單例模式Java設計模式單例
- Java常用設計模式-單例模式Java設計模式單例
- Java設計模式之單例模式Java設計模式單例
- java設計模式-單例模式SingletonJava設計模式單例
- Java設計模式——單例模式(建立型模式)Java設計模式單例
- java單例設計模式Java單例設計模式
- Java設計模式系列之單例設計模式Java設計模式單例
- 淺識JAVA設計模式——單例設計模式Java設計模式單例
- java設計模式其一 單例模式Java設計模式單例
- 折騰Java設計模式之單例模式Java設計模式單例
- 設計模式(單例模式)設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式-單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- 設計模式——單例模式設計模式單例
- [java設計模式]破解單例設計模式,禁止偷生、超生!Java設計模式單例
- 設計模式-單例模式、多例模式設計模式單例
- java23種設計模式—— 二、單例模式Java設計模式單例
- 設計模式之單例設計模式設計模式單例
- 設計模式(一)_單例模式設計模式單例
- 常用設計模式-單例模式設計模式單例
- 設計模式之單例模式設計模式單例
- 001設計模式:單例模式設計模式單例
- # Python設計模式 單例模式Python設計模式單例
- 設計模式一(單例模式)設計模式單例
- 設計模式之☞單例模式設計模式單例
- js設計模式--單例模式JS設計模式單例
- 設計模式(二)——單例模式設計模式單例
- 設計模式之---單例模式設計模式單例
- Python設計模式——單例模式Python設計模式單例
- 設計模式—singleton(單例模式)設計模式單例
- python設計模式-單例模式Python設計模式單例