• 单例模式


    一、什么叫单例模式

      单例模式是一种常用的软件设计模式。该模式的作用就是产生一个唯一的实例。也就是说通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。单例模式有如下特点: 

    • 单例类只可有一个实例
    • 单例类必须自己创建自己这惟一的实例
    • 单例类必须给所有其他对象提供这一实例

    二、单例模式的实现

      这里使用java实现。安装创建的方式不同,单例模式有2种实现。一种被称为饿汉式,另外一种被称为懒汉式。

     1、饿汉式

     

     1 package com.test.demo;
     2 
     3 /**
     4  * 单例模式
     5  * 
     6  */
     7 public class Singleton {
     8     private Singleton() {//私有化构造方法,禁止类外调用
     9     }
    10 
    11     private static Singleton singleton = new Singleton();
    12 
    13     public static Singleton getInstance() {//static 直接在通过类名调用
    14         return singleton;
    15     }
    16 
    17     public static void main(String[] args) {
    18         System.out.println(Singleton.getInstance() == Singleton.getInstance());
    19     }
    20 }

      饿汉式,当类被加载后,立即创建一个实例。

     2、懒汉式

     1 package com.test.demo2;
     2 
     3 /**
     4  * 单例模式
     5  * 
     6  */
     7 public class Singleton {
     8     private Singleton() {//私有化构造方法,禁止类外调用
     9     }
    10 
    11     private static Singletonsingleton;
    12   
    13     public static synchronized Singleton getInstance() {//static 直接在通过类名调用加锁防止两个线程同时进入的时候创建两个不一样的实例
    14         if (singleton == null)
    15             singleton = new Singleton2();
    16         return singleton;
    17     }
    18 
    19     public static void main(String[] args) {
    20         System.out,
    21                 .println(Singleton.getInstance() == Singleton.getInstance());
    22     }
    23 }

      懒汉式,当类被加载后,先不创建。当调用getInstance方法时,在方法里面判断是否已经创建了一个实例,若没有,则创建;若有则不创建,直接将实例返回。

  • 相关阅读:
    Android中实现定时器的三种方法 分类: Android 2015-07-14 18:04 11人阅读 评论(0) 收藏
    java构造器内部多态方法
    java继承方法覆盖
    java对象实例化 静态块,对象块,构造函数执行顺序
    Linux 的系统运行级别
    Jmeter启动jmeter-server.bat 报java.io.FileNotFoundException:rmi_keystore.jks 解决方法
    jmeter中JSON Extractors使用
    CentOS6.5下安装jenkins
    day12接口自动化测试框架
    day10 python接口开发、mock接口、网络编程
  • 原文地址:https://www.cnblogs.com/always-online/p/3478826.html
Copyright © 2020-2023  润新知