爲何要使用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
使用錘子
使用錘子
使用錘子