zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

    1、什么是单例模式?
    单例模式就是一个类只会有一个实例。
    2、单例模式实现方式
    2.1 懒汉模式
    /**
    * 保证该类只会生成一个类实例
    */
    public class LayzSinglePattern {
    private static LayzSinglePattern instance ;
     
    /**
    * 静态内部类,静态内部类是第一次被使用的时候加载的
    */
    private static class LayzHolder {
    private static final LayzSinglePattern INSTANCE = new LayzSinglePattern();
    }
     
    private LayzSinglePattern(){
    //do something
    }
     
    /**
    * 线程不安全的
    * @return
    */
    public static LayzSinglePattern getInstance() {
    if (null == instance) {
    instance = new LayzSinglePattern();
    }
    return instance;
    }
     
    /**
    * 线程安全的
    * @return
    */
    public static synchronized LayzSinglePattern getInatanceSecurity() {
    if (null == instance) {
    instance = new LayzSinglePattern();
    }
    return instance;
    }
     
    /**
    * 双重锁保证线程安全
    * @return
    */
    public static LayzSinglePattern getInstanceDoubbleLock() {
    if (null == instance) {
    synchronized(LayzSinglePattern.class) {
    if (null == instance){
    instance = new LayzSinglePattern();
    }
    }
    }
     
    return instance;
    }
     
    /**
    * 静态内部类保证线程安全
    * @return
    */
    public static LayzSinglePattern getInstanceInnerClass() {
    return LayzHolder.INSTANCE;
    }
     
    }
     
    2.2 饿汉模式
    /**
    * 饿汉模式采用关键字final修饰,final天生是线程安全的
    */
    public class HungrySinglePattern {
     
    private static final HungrySinglePattern instance = new HungrySinglePattern();
     
    public static HungrySinglePattern getInstance() {
    return instance;
    }
    }
     
     注意:JAVA反射会使单例模式失效
     
     
     
  • 相关阅读:
    用jmeter进行多用户并发压力测试 [转]
    jmeter 压力测试 参数
    web测试 结果存储类型为“Database”,但尚未指定结果储存库连接字符串
    apache配置多站点
    seajs + easyui [转]
    js,this,constrct ,prototype
    js call apply
    js this [转]
    [leetcode] Longest Common Prefix @ Python
    [leetcode] path sum @ Python [recursion]
  • 原文地址:https://www.cnblogs.com/tspeking/p/tspeking.html
Copyright © 2011-2022 走看看