• 单例模式


    单例模式

      

      设计目的:想在系统中只能出现一个类的实例

      特点:私有构造函数;类内部维护一个实例;生成一个静态获取实例的方法(延迟加载实例)

      实现方式:双重检测方式;静态内部类方式;枚举类实现

    双重检测方式

    package com.commonCode.singleton;
    
    /**
     * Created by Demrystv.
     */
    public class Singleton1 {
        //最原始版,采用双重检测
        private Singleton1() {
        }
    
        private volatile static Singleton1 instance;
    
        public static Singleton1 getInstance() {
    
            //如果实力已经创建,则不进行下面的同步
            if (instance == null){
                //开始同步,防止不需要创建实例的线程进行同步,降低性能
                synchronized (Singleton1.class){
                    //如果被同步的线程中,有一个线程创建了对象,那么别的线程就不用继续创建
                    if (instance == null){
                        instance = new Singleton1();
                    }
                }
            }
            return instance;
        }
    }

    静态内部类

    package com.commonCode.singleton;
    
    /**
     * Created by Demrystv.
     */
    public class Singleton2 {
    
        //单例的实例被声明成static和final变量,在第一次加载类到内存中时就会初始化
        //所以创建实例本身就是线程安全的
        //SingletonHolder的存在又使得Singleton2具备延时加载的特点
        private static class SingletonHolder{
            private static final Singleton2 INSTANCE = new Singleton2();
        }
    
        private Singleton2() {
        }
    
        public static final Singleton2 getInstance(){
            return SingletonHolder.INSTANCE;
        }
    }

    枚举类实现

    package com.commonCode.singleton;
    
    /**
     * Created by Demrystv.
     */
    public enum Singleton3 {
    
        //枚举类
        INSTANCE;
    
        private String string = name();
    
        public String getString() {
            return string;
        }
    
        public void setString(String string) {
            this.string = string;
        }
    
        public void test(){
            System.out.println("开始测试");
        }
    }
  • 相关阅读:
    JavaScript
    CSS
    HTML5&CSS
    I2C mux和复杂拓扑
    如何实例化I2C设备
    SMBus 协议
    I2C 协议
    I2C和SMBus简介
    ubuntu20.04系统下更新Raspberry Pi4的DTB
    通过configfs配置的Linux USB gadget
  • 原文地址:https://www.cnblogs.com/Demrystv/p/9420705.html
Copyright © 2020-2023  润新知