传统设计模式(五)单例模式

这个...... 大家应该熟的不能再熟了 虫子就不班门弄斧了

private static object LockKey = new object();
        private static T _Instance;

        public static T GetInstance()
        {
            return GetInstance(null);
        }

        public static T GetInstance(Func<T> onCreateInstance)
        {
            if (_Instance == null)
            {
                lock (LockKey)
                {
                    if (_Instance == null)
                    {
                        try
                        {
                            if (onCreateInstance == null)
                                _Instance = new T();
                            else
                                _Instance = onCreateInstance();
                        }
                        catch
                        {
                            _Instance = default(T);
                        }
                    }
                }
            }
            return _Instance;
        }

        public static T GetInstance(object lockKey, T instance, Func<T> onCreateInstance)
        {
            if (instance == null)
            {
                if (lockKey == null)
                    lockKey = LockKey;
                lock (lockKey)
                {
                    if (instance == null)
                    {
                        try
                        {
                            if (onCreateInstance == null)
                                instance = new T();
                            else
                                instance = onCreateInstance();
                        }
                        catch
                        {
                            instance = default(T);
                        }
                    }
                }
            }
            return instance;
        }

直接总结:单例模式确保一个类只有一个实例,并提供一个全局访问点

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/project/

Author:cnblogs 熬夜的虫子

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索object
, static
, instance
, null
, getinstance
, 单例模式总结
t设计模式
单例设计模式、java单例设计模式、java中单例设计模式、单例设计模式的好处、oc单例设计模式,以便于您获取更多的相关知识。

时间: 2024-09-14 02:28:46

传统设计模式(五)单例模式的相关文章

深入理解JavaScript系列(25):设计模式之单例模式详解

 这篇文章主要介绍了深入理解JavaScript系列(25):设计模式之单例模式详解,本文给出了多种单例模式的实现方式,需要的朋友可以参考下     介绍 从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现.OK,正式开始. 在传统开发工程师眼里,单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象.在JavaScript里,单例

java 程序性能优化《第二章》设计优化 2.1善用设计模式 1 单例模式

java 程序性能优化<第二章>设计优化 2.1善用设计模式 1 单例模式 设计模式是前人工作的总结和提炼.通常,被人们广泛流传的设计模式都是对某一特定问题的成熟的解决方案.如果能合理的使用设计模式,不仅能使系统更容易被他人理解,同时也能使系统拥有更加合理的结构.本节总结归纳了一些经典的设计模式,并详细说明它们与软件性能之间的关系. 2.1.1 单例模式 单例模式是设计模式中使用最为普遍的模式之一.它是一种对象创建模式,用于生产一个对象的具体实现,它可以确保系统中一个类只产生一个实例.在Jav

C#设计模式(1)——单例模式

原文:C#设计模式(1)--单例模式 一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二同时可以给一些初学设计模式的朋友一些参考.首先我介绍的是设计模式中比较简单的一个模式--单例模式(因为这里只牵涉到一个类) 二.单例模式的介绍 说到单例模式,大家第一反应应该就是--什么是单例模式?,从"单例"字面意思上理

php设计模式之单例模式实例分析

 这篇文章主要介绍了php设计模式之单例模式,实例分析了单例模式的原理与相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php设计模式之单例模式.分享给大家供大家参考.具体分析如下: 单例模式(职责模式): 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 单例类: 1.构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化: 2.拥有一个保存类的实

php设计模式之单例模式代码_php技巧

php设计模式之单例模式的例子,供大家参考,具体内容如下 <?php /** * php设计模式 单例模式 */ class Fruit{ private static $instanceMap = array(); //protected getter for singleton instances protected static function getSingleton($className){ //保证单例模式 并且不能从控制器实例化和克隆 if (!isset(self::$inst

php设计模式之单例模式实例分析_php技巧

本文实例讲述了php设计模式之单例模式.分享给大家供大家参考.具体分析如下: 单例模式(职责模式): 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 单例类: 1.构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化: 2.拥有一个保存类的实例的静态成员变量 3.拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操

设计模式之一(单例模式)

原文:设计模式之一(单例模式) 前言 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点. 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法就是,让类自身负责保存它的唯一实例.这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法. 单例模式 public class Singleton { private static Singleton instance; private static readon

【设计模式】—— 单例模式Singleton

模式意图 保证类仅有一个实例,并且可以供应用程序全局使用.为了保证这一点,就需要这个类自己创建自己的对象,并且对外有公开的调用方法. 模式结构 Singleton 单例类,内部包含一个本身的对象.并且构造方法时私有的. 使用场景 当类只有一个实例,而且可以从一个固定的访问点访问它时. 代码结构 [饿汉模式]通过定义Static 变量,在类加载时,静态变量被初始化. 1 package com.xingoo.eagerSingleton; 2 class Singleton{ 3 private

大话设计模式之单例模式

一.引入 小菜遇到的问题:"工具箱"窗体无法让其只出现一次. 大鸟的回答:"工具箱"类也需要计划生育. 二.解决过程 ① 最初的写法: <span style="font-family:KaiTi_GB2312;"><span style="font-size:24px;">private void Form1_Load(object sender,EventArgs e) { this.IsMdiCo