zoukankan      html  css  js  c++  java
  • java设计模式(一)单例模式

    单例模式保证系统中的类只有一个实例。单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式可以分为两种模式:饿汉模式、懒汉模式。

    1、饿汉模式

    public class EhanSingleton {
    
        //定义私有无参构造,防止通过new方式获取类实例
        private EhanSingleton(){
        }
    
        //创建类的唯一实例,使用private、static修饰,保证类加载及创建实例,所以称为饿汉模式
        private static EhanSingleton ehanSingleton = new EhanSingleton();
    
        //提供用于获取实例的方法
        public static EhanSingleton getInstance(){
            return ehanSingleton;
        }
    }

    测试

    public class test {
        public static void main(String[] args) {
            EhanSingleton e1 = EhanSingleton.getInstance();
            EhanSingleton e2 = EhanSingleton.getInstance();
            System.out.println(e1 == e2);//true,结果显示e1、e2为同一实例
        }
    }

    2、懒汉模式

    public class LanhanSingleton {
    
        //定义私有无参构造,防止通过new方式获取类实例
        private LanhanSingleton(){
        }
    
        //声明类的唯一实例
        private static LanhanSingleton lanhanSingleton;
    
        //提供用于获取实例的方法,当第一次获取时创建实例,所以称为懒汉模式
        public static LanhanSingleton getInstance(){
            if(lanhanSingleton == null) lanhanSingleton = new LanhanSingleton();
            return lanhanSingleton;
        }
    }

    测试

    public class test {
        public static void main(String[] args) {
            LanhanSingleton l1 = LanhanSingleton.getInstance();
            LanhanSingleton l2 = LanhanSingleton.getInstance();
            System.out.println(l1 == l2);//true,结果显示l1、l2为同一实例
        }
    }

     3、饿汉模式、懒汉模式区别

      1)饿汉模式在类加载时实例就被创建,故类加载时比较慢,但运行时获取速度快。懒汉模式则相反。

      2)饿汉模式是线程安全的,懒汉模式是非线程安全的。

      

  • 相关阅读:
    KVM镜像管理利器-guestfish使用详解
    两台linux机器时间同步
    git配合tortoiseGit的基础使用
    使用yum来下载RPM包而不进行安装
    Linux解压缩总结
    Linux下使用git命令及github项目
    linux shell常用快捷键
    调用 sphinx-build生成HTML文件
    复制virtualenv环境到其他服务器环境配置的方法
    CentOS 6.5 PYPI本地源制作
  • 原文地址:https://www.cnblogs.com/sunjf/p/java_singleton.html
Copyright © 2011-2022 走看看