Java學習筆記(二十四):單例設計模式singleton

爲何要使用singleton設計模式?設計模式

假設設計了一個操做數組的工具類(Tools),裏面有一個錘子的方法(Hammer),若是不使用singleton設計模式,每次想調用Hammer方法都須要new一個Tools類出來數組

 1 class Tools{
 2     //錘子
 3     public void Hammer(){
 4         System.out.println("使用錘子");
 5     }
 6 }
 7  
 8 public class ToolsDemo {
 9     public static void main(String[] args){
10     //須要使用錘子
11     new Tools().Hammer();
12     //須要使用錘子
13     new Tools().Hammer();
14     //須要使用錘子
15     new Tools().Hammer();
16     }
17 }    

運行結果工具

使用錘子
使用錘子
使用錘子

這樣很浪費內存資源,就像一個班級的人吃核桃須要用錘子砸,不必爲每一個學生買一個錘子,只需買一個錘子,誰要吃核桃誰就去用錘子,大大節省了成本。spa

因而就引出了singleton單例設計模式,只須要在內存中生成一次,之後想用只需調用這塊內存便可,不必每次都要從新在堆中new一個Tools類設計

 1 class Tools{
 2     //(1):必須在該類中,本身先建立出一個靜態對象
 3     private static Tools instance = new Tools();
 4     //(2):私有化自身的構造器,防止外界經過構造器建立新的對象
 5     private Tools(){}
 6     //(3):額外暴露一個公共的靜態方法用於獲取自身的對象
 7     public static Tools getInstance() {
 8         return instance;
 9     }
10 
11     //錘子
12     public void Hammer(){
13         System.out.println("使用錘子");
14     }
15 }
16 
17 public class ToolsDemo {
18     public static void main(String[] args){
19         //須要使用錘子
20         Tools.getInstance().Hammer();
21         //須要使用錘子
22         Tools.getInstance().Hammer();
23         //須要使用錘子
24         Tools.getInstance().Hammer();
25     }
26 }

運行結果code

使用錘子
使用錘子
使用錘子
相關文章
相關標籤/搜索