zoukankan      html  css  js  c++  java
  • 单例模式- 实现方式

    单例模式是基础设计模式之一

    单例模式定义:

    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

    单例模式特点:

    1、单例类只能有一个实例。

    2、单例类必须自己创建自己的唯一实例。

    3、单例类必须给所有其他对象提供这一实例。

    单例模式:分饱汉式单例和饿汉式单例

    饱汉式单例

    public class  enumTest {
    private final static enumTest enumTest = new enumTest();
    private enumTest(){}

    /**
    * 饿汉式,类加载完成实例化,避免线程同步
    * @return
    */
    public static enumTest getInstance(){
    return enumTest;
    }
    }



    饿汉式单例:
    public class Test {
    private static Test test;
    private Test(){ }

    /**
    * 懒汉式 线程不安全(只能单线程使用,多线程,一个线程进入判断语句块,未来得及往下执行,另一线程也通过此判断语句,产生多个实例)
    *
    * @return
    */
    public static Test getInstance(){
    if(test == null) {
    test = new Test();
    }
    return test;

    }


    /**
    * 线程安全 懒汉式
    * 缺点:效率低 每个线程在想获得类的实例时候,执行此方法 都要进行同步
    * @return
    */
    public static synchronized Test getInstance1(){
    if(test == null){
    test = new Test();
    }
    return test;
    }



    /**
    * 双重检查 懒汉式(推荐使用)
    * 优点:线程安全,延迟加载,效率较高
    * @return
    */
    public static Test getInstance2(){
    if(test == null){
    synchronized(Test.class){
    if(test ==null){
    test = new Test();
    }
    }
    test = new Test();
    }
    return test;
    }
    }

    综上所述,推荐使用双重检查懒汉式单例模式 或 饱汉式单例模式(其实对内存的影响可以忽略不计)

  • 相关阅读:
    将Word、Excel内容显示在Winform界面
    C#操作Word
    WinForm控件小知识
    C#一些小知识点
    C#导入导出Excel表的数据
    tp控制数据库
    php缓存
    php环境搭建(转自发瑞)
    tp框架知识集锦(3.2)
    用smarty模板实现数据的显示修改以及分页
  • 原文地址:https://www.cnblogs.com/zhangxiya/p/15394317.html
Copyright © 2011-2022 走看看