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

    1. 单例模式的概念

        单例模式的意思就是一个类只有一个实例。单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类。

    2. 关键点:

            1) 一个类只有一个实例

            2)必须自行创建这个实例

            3)自行向系统提供这个实例

    3. 单例类所包含的关键要素:

            1) 私有的构造方法 (避免在外部被实例化)

            2) 指向自己实例的私有静态应用

            3) 以自己的实例为返回值的静态的共有方法

    4.  常用的几种实现方式:

           一:懒汉式单例(类加载时不初始化) 

    /**
     * 单例---懒汉式(线程安全)
     * 类加载时不初始化,类加载速度快,运行时获取对象速度慢
     * @author zqkj001
     *
     */
    public class Singleton {
    	
    	public static  Singleton singleton=null;
       
    	/* private 构造方法,防止被外部实例化 */
    	private Singleton(){
    		
    	}
    	
    	/**
    	 * 静态实例创建方法
    	 * 使用synchronized关键字同步,确保多线程环境下线程安全
    	 * @return
    	 */
    	public static synchronized Singleton getInstance(){
    		if(singleton==null){		
    			return new Singleton();
    		}		
    		return singleton;
    	}
    	
    }
        二、饿汉式单例(类加载时初始化)

    /**
     * 单例---饿汉式
     * 1、类加载时完成初始化,不会有线程问题
     * 2、类加载时初始化,所以类加载速度慢,获取对象速度快
     * @author zqkj001
     *
     */
    public class Singnalton1 {
       
    	public static Singnalton1 s=new Singnalton1();
    
    	/**
    	 * 私有构造方法,防止被外部实例化
    	 */
    	private Singnalton1() {
    
    	}
    	
    	public static Singnalton1 getInatance(){
    		return s;
    	}
    	
    }
        三、使用内部类维护单例的实现

    /**
     * 单例--内部类维护单例的实现(线程安全)
     * @author zqkj001
     *
     */
    public class Singalton2 {
    
    	private Singalton2() {
    		
    	}
    	
    	/**
    	 * 使用内部类完成单例的实现
    	 * 缺点:如果构造方法中抛出异常,则实例永远不会被创建
    	 *
    	 */
    	private static class SingaltonFactory{
    		private static Singalton2 instance=new Singalton2();
    	}
    	
    	public static Singalton2 getInstance(){
    		return SingaltonFactory.instance;
    	}
       
    	
    }


    
    


  • 相关阅读:
    ensp抓包只有蓝色的点闪烁没有跳出wireshark
    QuartusII 13.1编译通过,波形仿真报错Error: near "/": syntax error, unexpected '/', expecting ')'
    安装Multisim时出现No software will be installed or removed无法安装
    JavaScript实现页面实时显示时间
    css图片覆盖文字 点击显示文字
    php魔术方法——属性重载方法
    php魔术方法——构造函数和析构函数
    将含有父ID的列表转成树
    分割gbk中文出现乱码的问题解决
    json_encode如何防止汉字转义成unicode
  • 原文地址:https://www.cnblogs.com/elgin-seth/p/5293773.html
Copyright © 2011-2022 走看看