首页 > 其他分享 >singleton pattern

singleton pattern

时间:2023-03-16 10:35:43浏览次数:28  
标签:singleton pattern Singleton private instance static null

C1.overview

p1.concept

problems

  1. People can use reflect mechanism to create other instance to violate singleton.
  2. The safety of thread
  3. Instruction reordering
  4. Deserialization also can violate the integrity of singleton

solutions

  1. Static area solve reflect problems
  2. Double check locks
  3. Keyword of volatile
  4. Rewrite the method of readResolve

P2 .code

simple demo

public class Singleton implements Serializable {

    private static final long serialVersionUID = 1L;

    private static volatile Singleton instance;

    private Singleton() {
        // 防止通过反射机制创建新实例
        if (instance != null) {
            throw new RuntimeException("请使用getSingleton()方法获取单例实例");
        }
    }

    public static Singleton getSingleton() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    // 重写readResolve()方法,防止反序列化破坏单例
    private Object readResolve() throws ObjectStreamException {
        return instance;
    }
}

标签:singleton,pattern,Singleton,private,instance,static,null
From: https://www.cnblogs.com/wshlblog/p/17221353.html

相关文章

  • 10 url-pattern的匹配规则
    ​ URL的匹配规则精确匹配精确匹配是指<url-pattern>中配置的值必须与url完全精确匹配。<servlet-mapping><servlet-name>demoServlet</servlet-name><......
  • 10 url-pattern的匹配规则
    ​ URL的匹配规则精确匹配精确匹配是指<url-pattern>中配置的值必须与url完全精确匹配。<servlet-mapping><servlet-name>demoServlet</servlet-name><......
  • [Typescript] Builder pattern - 05 Exercise
    classOverriden<TMapextendsobject={}>{privatemap:TMap;constructor(obj:TMap){this.map=obj;}build(){returnthis.map}me......
  • 《设计模式之禅》Proxy_Pattern--代理模式
    代理模式这一章以潘金莲和王婆以及西门庆三人的故事作为程序的对象,下面就通过西门庆与潘金莲的故事来理解代理模式,途中车速过高,各位请系好安全带,发车喽!!!什么是代理模式呢?......
  • ExcelPatternTool: Excel表格-数据库互导工具
    ExcelPatternToolExcel表格-数据库互导工具介绍:指定Pattern文件-一个规则描述的json文档,基于此规则实现Excel表格与数据库之间的导入导出,校验等功能。特点:小巧,轻量......
  • .NET(C#) HttpClient单例(Singleton)和每次请求new HttpClient对比
    本文主要介绍.NET(C#)中,使用HttpClient执行求时,每次请求都执行newHttpClient创建一个实例和每次请求都使用同一个HttpClient(单例Singleton)分比区别。 1、每次请求创......
  • 《设计模式之禅》Strategy_Pattern--策略模式
    写在前面设计模式之禅这本书也是博主看了几本设计模式的开头才决定以这本书作为学习设计模式的资料。像小傅哥的重学Java设计模式,好处是以真实的项目案例的逻辑来搭配设计模......
  • Singleton Design Parttern
    单例模式是最常见也是最简单的设计模式,保证一个类只有一个实例并且提供一个全局访问点,主要解决实例被频繁的创建和销毁可能带来内存消耗问题。单例模式的特点:  1、私......
  • ChainofResponsibility Pattern
    责任链模式:参考:https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象......
  • Decorator Pattern
    装饰器模式:参考https://www.runoob.com/design-pattern/decorator-pattern.html动态地给一个对象添加一些额外的功能。装饰类和被装饰类可以独立发展,不会相互耦合,装饰模......