• 单例模式demo


    package com.test;


    /**
    *
    * @author Administrator
    *我的发现:调用这个的时候,不能直接实例化了;需要=null;然后get; 这样安全些;
    *然后仔细找了下单例模式的解释,发现是这样的;单例模式要线程安全,有单独且唯一的一个例子;
    *所以重新了构造方法,改成了安全的private,然后加了一个例子,setget方法(set方法干掉了、),
    *这里是饿汉式单例模式,在类初始化的时候就新实例化了一个唯一的实例了;
    *
    *注: 单例模式有以下特点:
      1、单例类只能有一个实例。
      2、单例类必须自己创建自己的唯一实例。
      3、单例类必须给所有其他对象提供这一实例。

    单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例(略)。
    */
    public class SingletonClass {
    //饿汉式:
    /*
    private SingletonClass() {}

    private static final SingletonClass instance = new SingletonClass();

    public static SingletonClass getInstance() {
    return instance;
    }
    */
    //懒汉式:
    /*
    private SingletonClass() {}

    private static SingletonClass instance = null;

    public static SingletonClass getInstance() {
    instance = new SingletonClass();
    return instance;
    }
    */
    //懒汉式在getInstance方法上+同步:
    /*
    private SingletonClass() {}

    private static SingletonClass instance = null;

    public static SingletonClass getInstance() {
    if(instance==null){
    instance = new SingletonClass();
    }
    return instance;
    }
    */
    //懒汉式+双重检查锁定
    /*
    private SingletonClass() {}

    private static SingletonClass instance = null;

    public static SingletonClass getInstance() {
    if(instance==null)
    synchronized (SingletonClass.class) {
    if(instance==null){
    instance = new SingletonClass();
    }
    }
    return instance;
    }
    */
    //静态内部类
    //(既实现了线程安全,又避免了同步带来的性能影响)
    private static class LazyHolder {
    private static final SingletonClass INSTANCE = new SingletonClass();
    }

    private SingletonClass() {
    }

    public static final SingletonClass getInstance() {
    return LazyHolder.INSTANCE;
    }

    }

  • 相关阅读:
    一点一点学ASP.NET之基础概念——HttpModule
    Repeater为空时显示处理
    数据绑定控件的ItemDataBound事件与System.Data.Common.DbDataRecord
    Fckeditor编辑器添加【行距】
    gridview用法大全(二)
    Web.config自定义节点configSections
    C#中的特性(Attributes)(翻译)
    给程序员的忠告
    项目管理(转载)
    在ASP.NET 2.0中使用样式、主题和皮肤(转载)
  • 原文地址:https://www.cnblogs.com/signoffrozen/p/7131723.html
Copyright © 2020-2023  润新知