当前位置: 首页 > news >正文

短网站生成百度商家平台登录

短网站生成,百度商家平台登录,asp网站授权码如何做,自媒体运营1. 设计模式详解 单例模式是一种创建对象的设计模式,它确保一个类只有一个实例,并提供全局访问点以获取该实例。 在单例模式中,类负责创建自己的唯一实例,并确保任何其他对象只能访问该实例。这对于需要共享状态或资源的情况非常有…

1. 设计模式详解

        单例模式是一种创建对象的设计模式,它确保一个类只有一个实例,并提供全局访问点以获取该实例。

        在单例模式中,类负责创建自己的唯一实例,并确保任何其他对象只能访问该实例。这对于需要共享状态或资源的情况非常有用,例如数据库连接,日志记录器或线程池。

单例模式的主要特点包括:

  1. 私有构造函数:单例类的构造函数被声明为私有,这样其他类无法直接实例化该类。

  2. 静态实例变量:单例类内部维护一个静态实例变量,用于保持对单例实例的引用。

  3. 静态获取方法:单例类提供一个静态方法,以便其他类可以通过该方法获取单例实例。通常,该方法在首次调用时会创建单例实例,并在后续调用时返回该实例。

2.单例模式代码

单例模式实现代码很简单:

/*** @Author: stukk* @Description: 单例模式* @DateTime: 2023-12-17 22:14**/
public class Singleton {private static Singleton singleton;private Singleton(){}public static Singleton getInstance() {if(singleton == null){singleton = new Singleton();}return singleton;}public void showMessage(){System.out.println("我是单例模式");}
}/*** @Author: stukk* @Description: 客户端* @DateTime: 2023-12-17 22:16**/
public class SingletonMode {public static void main(String[] args) {Singleton singleton = Singleton.getInstance();singleton.showMessage();}
}

 

3. 单例模式的多种实现方式

单例模式有多种形式,每种形式都在实现单例模式的基本原则上略有不同。

3.1. 懒汉式单例模式(Lazy Initialization):

也就是上面展示的代码

特点:在首次调用获取实例的方法时才创建单例实例

优点:延迟实例化,节省资源

缺点:需要考虑线程安全

线程安全版本:

public class LazySingleton {private static LazySingleton singleton;private LazySingleton(){}public static synchronized LazySingleton getInstance() {if(singleton == null){singleton = new LazySingleton();}return singleton;
}
3.2. 饿汉式单例模式(Eager Initialization):

特点:在类加载的时候就创建单例实例

优点:简单直接、线程安全

缺点:加载的时候就实例化,可能会实例到不需要使用的类,浪费资源

代码:

/*** @Author: stukk* @Description: 饿汉式单例模式* @DateTime: 2023-12-17 22:31**/
public class EagerSingleton {private EagerSingleton(){}private static EagerSingleton singleton = new EagerSingleton();public static EagerSingleton getInstance(){return singleton;}public void showMessage(){System.out.println("我是饿汉单例模式");}
}

3.3.双重检查锁单例模式(DCL——Double-Checked-Locking)

特点:结合了懒汉式与同步锁机制,在首次调用获取实例的方法式进行双重检查,提高性能。

优点:延迟实例化且线程安全,性能相对较高

缺点:在某些情况下可能还是会出错,比如多线程环境下的指令重排序,会导致不正确的结果。

示例代码:

/*** @Author: stukk* @Description: 双重检查锁单例模式* @DateTime: 2023-12-17 22:41**/
public class DCLSingleton {private DCLSingleton(){}private volatile static DCLSingleton dclSingleton;public static DCLSingleton getInstance(){if(dclSingleton == null){synchronized (DCLSingleton.class){if(dclSingleton == null){dclSingleton = new DCLSingleton();}}}return dclSingleton;}public void showMessage(){System.out.println("我是双重校验锁单例模式");}
}

3.4. 枚举单例模式(Enum)

特点:使用枚举类实现单例,枚举类保证只有一个实例。

优点:简单、线程安全、防止反射和序列化攻击。

示例代码:(这里以计数器为例子)

/*** @Author: stukk* @Description: 使用枚举实现* @DateTime: 2023-12-17 22:46**/
public enum EnumSingleton {INSTANCE;
//    假设是个计数器private int counter;//    私有构造函数private EnumSingleton(){counter = 0;}//    获取计数器的值public int getCounter(){return counter;}//    计数器++public void addCounter(){counter ++;}//    其他 操作public void showMessage(){System.out.println("我是枚举单例模式,此时计数器值为:"+getCounter());}
}/*** @Author: stukk* @Description: 客户端* @DateTime: 2023-12-17 22:16**/
public class SingletonMode {public static void main(String[] args) {EnumSingleton singleton = EnumSingleton.INSTANCE;singleton.showMessage();singleton.addCounter();singleton.showMessage();}
}

枚举单例模式的使用非常简单,只需要使用枚举类的名称后跟 .INSTANCE 即可获取到单例实例,无需担心线程安全性或其他实现细节。

http://www.sczhlp.com/news/61237/

相关文章:

  • 英文网站建设大概多少钱娄底市城乡建设局网站
  • 哪家公司建设网站好校园网站模版
  • 网站制作自学百度云html教程推荐
  • 无锡 学校网站建设平面设计包括什么
  • 没有主机怎么做自己的网站中国万网是百度的吗
  • a-select既能输入也能下拉
  • 外贸网站官网怎么做ppt在线浏览网站源码
  • 网站维护升级页面用文本文档做网站
  • 国内扁平化网站欣赏做网站哪个公司好 快选宁陵建站宝
  • asp.net网站开发源码宁波怎么建网站模板
  • 男女主网站上做的popo免费网站的手机版本源码模板
  • 局域网站怎么做昊源建设监理有限公司网站
  • 旅游网站 系统网站 邮箱功能 设置
  • 企业网站开发外包公司建设论坛网站需要做什么的
  • wordpress网站新闻wordpress添加文章分类二级
  • 上传网站空间phpstudy 网站空白
  • 【一文分享】跨网文件传输系统是什么?哪个品牌好?
  • Web前端入门第 86 问:JavaScript 中的 Web Worker 为什么能提升代码性能?
  • 如何使用 vxe-table 实现穿梭框的功能,同时还能支持数据拖拽穿梭
  • docker 网段与主机网段冲突 - 解决方案
  • 如何建设网站兴田德润简介梅陇做网站
  • 常州网站推广优化wordpress百家号主题
  • 张艺兴粉丝做的网站外链推广
  • 华泰保险公司官方网站电话搜索关键词排名优化技术
  • 网站开发合作协议书传统网站设计的缺点
  • 本作业是网站建设与维护网站推广的具体方案
  • 1做网站的公司东莞人才网智通
  • 建筑设计资料网站一套vi设计大概多少钱
  • 企业网站手机版模板建网站的详细技术
  • 英语速记