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

    单例模式的意义

    有些对象我们只需要一个:线程池、缓存、硬件设备等

    如果多个实例会有造成冲突、结果的不一致性等问题

    是否可以用静态变量方式来实现?

    或者程序员之间协商个全局变量?

    单例模式:确保一个类最多只有一个实例,并提供一个全局访问点 

    单例模式类图:

    把构造函数私有化,getInstance中判断uniqueInstance是否已经实例化,若已经实例化直接返回,否则实例化后返回

    代码演示:

    package com.java.jikexueyuan.singleton;
    
    public class Singleton {
        
        private static Singleton uniqeInstance=null;
        
        private Singleton(){
            
        };
        
        public static Singleton getInstance()
        {
            if(uniqeInstance==null)
            {
                uniqeInstance=new Singleton();
            }
            return uniqeInstance;
            
        }
    
    }

    单例模式的优化

    多线程问题

      可能会出现创建多个实例的情况

    优化:

      同步(synchronized)getInstance方法:频繁情况比较耗资源

      “急切”创建实例(饿汉式):在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

    双重检查加锁

      

  • 相关阅读:
    1-4-04:奇偶ASCII值判断
    1-4-03:奇偶数判断
    1-4-02:输出绝对值
    1-4-01:判断数正负
    1-3-20:计算2的幂
    1-3-19:A*B问题
    1-3-18:计算三角形面积
    Use PIVOT Table in SQL Server
    Pivoting DataTable Simplified
    Pivot Methods 行列转换
  • 原文地址:https://www.cnblogs.com/lm970585581/p/9595499.html
Copyright © 2011-2022 走看看