Java中的单例(Singleton)类
来源:互联网 发布:cos图片特效软件 编辑:程序博客网 时间:2024/06/01 08:17
如果一个类始终只能创建一个实例,则这个类被称为单例类。
静态成员不能直接访问非静态成员。
一般情况下,一个类的构造器会用public修饰,允许任何类自由创建该类的对象,但在一些特殊的场景下,要求不允许自由创建该类的对象,所以,要把该类的构造器用private修饰,从而把该类的构造器隐藏起来。
将该类的构造器隐藏之后,需要提供一个用private修饰的方法作为该类的访问点,即getter和setter方法,用于创建该类的对象,且该方法必须用static修饰,因为调用该方法的不可能是对象,只能是类。实例如下:
class Singleton{ //使用一个类变量来缓存曾经创建的实例 private static Singleton instance; //对构造器使用private修饰,隐藏该构造器 private Singleton(){}; //提供一个静态方法,用于返回singleton实例 //该方法可以加入自定义控制,保证只产生一个Singleton对象 //get方法 public static Singleton getInstance() { //如果Instance为null,则表明还不曾创建Singleton对象,反之,则表示已创建。 if (instance == null) { //创建一个Singleton对象,并将其缓存起来 instance = new Singleton(); } return instance; }}public class SingletonTest { public static void main(String[] args) { //创建Singleton对象不能通过构造器,只能通过getInstance方法来得到实例 Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); String s3 =new String("hello"); String s4 = new String("hello"); System.out.println(s1 == s2); //将输出true System.out.println(s3 == s4); //将输出false }}
运行结果如下:
truefalse
由运行结果可知,Singleton类只能产生一个实例,所以,s1和s2指向的是同一个对象。
而String类在内存中则是可以创建多个对象,所以,s3和s4指向两个不同的对象。
0 0
- Java中的单例(Singleton)类
- java中的Singleton(单例)模式
- 关于java中的单例模式(singleton)
- 学习java中的单例模式(Singleton)
- JAVA中的单例设计(Singleton)模式
- JAVA中的单例设计(Singleton)模式
- JAVA中的单例模式(Singleton)
- java中的Singleton单例模式
- Java中的单例设计模式Singleton
- Java 单例Singleton
- IOS中的单例模式(Singleton)
- 【JAVA-基础】—类成员单例(Singleton)类
- Java 单例模式(singleton)类设计
- java单例模式(Singleton pattern)
- JAVA单例模式(Singleton)
- Java之单例模式(Singleton)
- JAVA设计模式:单例(Singleton)
- java单例模式(Singleton)
- laravel学习笔记(1)- windows中wamp环境composer使用中openssl问题解决
- binder 进程间通信笔记
- 读书有感
- 诗歌的创作、诗词总结与应用
- Java学习(七) String类(1)
- Java中的单例(Singleton)类
- Vue.js 系列教程 ①
- C++编译调试
- offsetWidth scrollwidth clientWidth 区别
- 正斜杠(/)与反斜杠(\)区别
- APP测试基本流程
- 机器学习---决策树CART---opencv源码分析
- Android开发中怎样用多进程、用多进程的好处、多进程的缺陷、解决方法
- python 实现单链表