Java学习笔记(二十四):单例设计模式singleton

Posted pyqb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }    

运行结果

使用锤子
使用锤子
使用锤子

这样很浪费内存资源,就像一个班级的人吃核桃需要用锤子砸,没必要为每个学生买一个锤子,只需买一个锤子,谁要吃核桃谁就去用锤子,大大节省了成本。

于是就引出了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 }

运行结果

使用锤子
使用锤子
使用锤子

 

以上是关于Java学习笔记(二十四):单例设计模式singleton的主要内容,如果未能解决你的问题,请参考以下文章

Java基础学习笔记二十四 MySQL安装图解

java最新面试题及答案2020(二十四)

Python学习笔记(二十四)StringIO和BytesIO

jquery源码学习笔记(二十四)

Java学习总结(二十四)——前端:CSS样式设计(CSS引入,选择器,盒子模型,浮动元素)

Python学习笔记第二十四五周(Django补充)