您的位置:首页 > 财经 > 金融 > 开发网站价格_辽宁省工程造价信息网官网_班级优化大师免费下载_成都网站设计

开发网站价格_辽宁省工程造价信息网官网_班级优化大师免费下载_成都网站设计

2024/12/23 10:50:36 来源:https://blog.csdn.net/Bof_jangle/article/details/144246133  浏览:    关键词:开发网站价格_辽宁省工程造价信息网官网_班级优化大师免费下载_成都网站设计
开发网站价格_辽宁省工程造价信息网官网_班级优化大师免费下载_成都网站设计

目录

0、定义

1、单件模式的一个角色

2、单件模式的UML类图

3、示例代码


0、定义

        保证一个类仅有一个实例,并提供一个访问它的全局访问点。

1、单件模式的一个角色

  • 单件类(Singleton):单件类只可以创建出一个实例。

2、单件模式的UML类图

3、示例代码

简单的单件模式

package xyz.jangle.design.singleton;
/*** 单件模式* @author Administrator**/
public class Singleton {private static Singleton uniqueInstance;private Singleton() {System.out.println("简单的单例模式");};public static synchronized Singleton getInstance() {if(uniqueInstance==null) {uniqueInstance= new Singleton();}return uniqueInstance;}}

使用双重检测的单件模式

package xyz.jangle.design.singleton;
/*** 单例模式,双重检测。* @author Administrator**/
public class SingletonDouble {private static SingletonDouble uniqueInstance;private SingletonDouble() {System.out.println("单例模式,使用双重检测");}public static SingletonDouble getInstance() {if(uniqueInstance==null) {synchronized (SingletonDouble.class) {if(uniqueInstance==null) {uniqueInstance = new SingletonDouble();}}}return uniqueInstance;}}

使用静态内部类的单件模式

package xyz.jangle.design.singleton;
/*** 使用静态内部类实现单例模式* @author Administrator**/
public class SingletonInnerStatic {private SingletonInnerStatic() {System.out.println("静态内部类的单例模式");};private static class SingletonInner {private static final SingletonInnerStatic INSTANCE = new SingletonInnerStatic();}public static SingletonInnerStatic getInstance() {return SingletonInner.INSTANCE;}}

客户端(使用)

package xyz.jangle.design.singleton;public class AppMain17 {public static void main(String[] args) {for (int i = 0; i < 10; i++) {new Thread(()->{ System.out.println("获取单例模式");Singleton instance = Singleton.getInstance();System.out.println("成功获取单例"+instance);}).start();}for (int i = 0; i < 10; i++) {new Thread(()->{ System.out.println("获取单例模式");SingletonDouble instance = SingletonDouble.getInstance();System.out.println("成功获取单例"+instance);}).start();}for (int i = 0; i < 10; i++) {new Thread(()->{ System.out.println("获取单例模式");SingletonInnerStatic instance = SingletonInnerStatic.getInstance();System.out.println("成功获取单例"+instance);}).start();}}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com