博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最简单的单例模式
阅读量:4313 次
发布时间:2019-06-06

本文共 1327 字,大约阅读时间需要 4 分钟。

  如果一个类始终只能创建一个实例,则这个类被称为单例类。

  在一些特殊的场景下,要求不允许自由创建该类的对象,而是只允许为该类创建一个对象。为了避免其他类自由创建该类的实例,我们把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。

  根据良好封装的原则:一单把该类的构造器隐藏起来,则需要提供一个public方法作为该类的访问点,用于创建该类的对象,且该方法必须使用static修饰(因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类)。

  除此之外,该类还必须缓存已经创建的对象,否则该类无法知道是否曾经创建过对象,也就无法保证只创建一个对象。为此该类需要使用一个属性来保存曾经创建的对象,因为该属性需要被上面的静态方法访问,故该属性必须使用static修饰。

  基于上面的介绍,下面程序创建了一个单例类。

  程序如下:

  

1 class  Singleton 2 { 3     //使用一个变量来缓存曾经创建的实例 4     private static Singleton instance; 5     //讲构造器用private来修饰,隐藏该构造器 6     private Singleton(){}; 7     //提供一个静态方法,用于返回Singleton实例 8     //该方法可以加入自定义的控制,保证只产生一个Singleton对象 9     public static Singleton getIntance()10     {11         //如果instance为null,表明还不曾创建Singleton对象12         //如果instance不为null,则表明已经创建了Singleton对象,将不会执行该方法13         if(instance==null)14         {15             //创建一个Singleton对象,并将其缓存起来16             instance=new Singleton();17         }18         return instance;19     20     }21     22 }23 24 // 测试代码25 public class TestSingleton26 {27     public static void main(String[] args) 28     {29         //创建Singleton对象不能通过构造器,只能通过getInstance的方法30         Singleton s1=Singleton.getInstance();31         Singleton s1=Singleton.getInstance();32         //将输出true33         System.out.println(s1==s2);34     }35 }

转载于:https://www.cnblogs.com/baiduligang/p/4247541.html

你可能感兴趣的文章
Light oj 1233 - Coin Change (III) (背包优化)
查看>>
0-1背包之四
查看>>
Mysql 创建存储过程 更新表
查看>>
Qt Creator键盘快捷键速查
查看>>
Jquery Ajax处理,服务端三种页面aspx,ashx,asmx的比较
查看>>
JVM读书笔记PART3
查看>>
我的四则运算
查看>>
php上传文件如何保证上传文件不被改变或者乱码
查看>>
目录遍历代码
查看>>
iOS MD5加密实现方法
查看>>
页面中调用系统常用的对话框需要用到的classid
查看>>
cygwin下的目录软连接
查看>>
eclipse控制台不显示输出的解决办法
查看>>
Java中的TCP/UDP网络通信编程
查看>>
cordova学习:事件Events
查看>>
lincode167 - Add Two Numbers - easy
查看>>
大叔手记(3):Windows Silverlight/Phone7/Mango开发学习系列教程
查看>>
在Delphi中使用C++对象(转)
查看>>
mac 特殊符号的操作
查看>>
C++原创应用类库和工具类库
查看>>