在飛機上也能快速上網,SpaceX 將為 JSX 航空提供星鏈網路服務
阿新 • • 發佈:2022-04-22
類的單例設計模式,就是採取一定的方法保證在整個的軟體系統中,對某個類只能存在一個物件例項,並且該類只能提供一個取得其物件例項的方法。
我們首先將類的構造器訪問許可權設定為private,這樣,就不能用new操作符在類的外部產生類的物件了,但在類的內部可以產生該類的物件。在類的外部只能通過呼叫該類的某個靜態方法以返回類內部建立的物件,靜態方法只能訪問類中的靜態成員變數,所以,指向類內部產生的該類物件的變數也必須定義成靜態的。
單例的餓漢式實現
1 public class hungry {
2 public static void main(String[] args) {
3 Bank bank1 = Bank.getInstance();
4 Bank bank2 = Bank.getInstance();
5
6 System.out.println(bank1 == bank2); //true
7 }
8 }
9
10 class Bank{
11 //1.私有化類的構造器
12 private Bank(){
13
14 }
15 //2.內部建立類物件
16 //4.要求此物件也必須宣告為靜態的
17 private static Bank instance = new Bank();
18
19 //3.提供公共的靜態方法,返回類的物件
20 public static Bank getInstance(){
21 return instance;
22 }
23 }
單例的懶漢式實現(執行緒不安全方式)
1 public class lazy {
2 public static void main(String[] args) {
3 Order order1 = Order.getInstance();
4 Order order2 = Order.getInstance();
5
6 System.out.println(order1 == order2); //true
7 }
8 }
9
10 class Order{
11 //1.私有化類的構造器
12 private Order(){
13
14 }
15 //2.內部建立類物件
16 //4.要求此物件也必須宣告為靜態的
17 private static Order instance ;
18
19 //3.提供公共的靜態方法,返回類的物件
20 public static Order getInstance(){
21 if(instance == null) instance = new Order();
22 return instance;
23 }
24 }
優點:減少了系統性能開銷。