单例模式 Dear 丶 2021-09-17 02:10 360阅读 0赞 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问改实例的方法; 实现: ![20181122221537265.png][] 代码实现: 懒汉试,线程不安全 /** * @author Shuyu.Wang * @package:com.shuyu.singleton * @description:单列模式,懒汉式,线程不安全 * @date 2018-11-22 21:42 **/ public class Singleton1 { private static Singleton1 singleton1; //防止外界使用new 创建次类实例 private Singleton1(){ } public static Singleton1 getInstance(){ if (singleton1==null){ singleton1=new Singleton1(); } return singleton1; } } 双重锁: /** * @author Shuyu.Wang * @package:com.shuyu.singleton * @description:懒汉式,采用双锁机制,安全且在多线程情况下能保持高性能 * @date 2018-11-22 21:57 **/ public class Singleton2 { private volatile static Singleton2 singleton2; private Singleton2(){ } private static Singleton2 getInstance(){ if (singleton2==null){ synchronized (Singleton2.class){ if (singleton2==null){ singleton2=new Singleton2(); } } } return singleton2; } } 饿汉式: /** * @author Shuyu.Wang * @package:com.shuyu.singleton * @description:饿汉式,线程安全,没有加锁,效率高,类加载时初始化,浪费内存 * @date 2018-11-22 22:02 **/ public class Singleton3 { private static Singleton3 singleton3=new Singleton3(); private Singleton3(){ } private static Singleton3 getInstance(){ return singleton3; } } 测试代码: @RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class SingletonApplicationTests { @Test public void contextLoads() { Singleton1 singleton1=Singleton1.getInstance(); Singleton1 singleton2=Singleton1.getInstance(); if (singleton1==singleton2){ log.info("两个对象时相同的实例"); } } } github代码地址:[https://github.com/iot-wangshuyu/designpatterns/tree/master/singleton][https_github.com_iot-wangshuyu_designpatterns_tree_master_singleton] [20181122221537265.png]: /images/20210901/e4270a9a79ea4233bcfa1c12ed8e8262.png [https_github.com_iot-wangshuyu_designpatterns_tree_master_singleton]: https://github.com/iot-wangshuyu/designpatterns/tree/master/singleton
相关 单例模式 http://blog.csdn.net/zhengzhb/article/details/7331369 定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实 曾经终败给现在/ 2022年09月25日 15:30/ 0 赞/ 265 阅读
相关 单例模式 class sigle{ protected static $ins = null; public function getIns(){ 深藏阁楼爱情的钟/ 2022年07月20日 20:27/ 0 赞/ 286 阅读
相关 单例模式 简介: 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在 ﹏ヽ暗。殇╰゛Y/ 2022年05月09日 15:46/ 0 赞/ 178 阅读
相关 单例模式 <table> <tbody> <tr> <td style="vertical-align:top;width:.6868in;"> <p style 矫情吗;*/ 2021年11月22日 10:52/ 0 赞/ 320 阅读
相关 单例模式 单例模式 单例模式(SingletonPattern)是java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及 红太狼/ 2021年11月16日 05:30/ 0 赞/ 340 阅读
相关 单例模式 1、懒汉式,线程不安全 是否 Lazy 初始化:是 是否多线程安全:否 实现难度:易 描述:这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。因为没有 以你之姓@/ 2021年11月11日 17:44/ 0 赞/ 304 阅读
相关 单例模式 应用场景 1. windows的任务管理器 2. 网站的计数器 3. 应用程序的日志 4. 数据库连接池,因为数据库连接是一种数据库资源。数据库软件系统中使用数据 r囧r小猫/ 2021年11月11日 15:08/ 0 赞/ 377 阅读
相关 单例模式 单例模式有以下特征: 1. 只有一个对象存在 2. 对象的实例化必须在类中实现 一、懒汉模式(线程不安全) package com.kevin; 谁借莪1个温暖的怀抱¢/ 2021年10月01日 07:48/ 0 赞/ 345 阅读
相关 单例模式 1.定义 单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。 2.实现步骤 1. 将该类的构造方法定义为私有方法,这样其他处 小咪咪/ 2021年09月27日 13:56/ 0 赞/ 426 阅读
相关 单例模式 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责 Dear 丶/ 2021年09月17日 02:10/ 0 赞/ 361 阅读
还没有评论,来说两句吧...