为什么要使用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 }
运行结果
使用锤子
使用锤子
使用锤子
这样很浪费内存资源,就像一个班级的人吃核桃需要用锤子砸,没必要为每个学生买一个锤子,只需买一个锤子,谁要吃核桃谁就去用锤子,大大节省了成本。
于是就引出了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 }
运行结果
使用锤子
使用锤子
使用锤子