博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重头开始学23种设计模式:单例模式
阅读量:4693 次
发布时间:2019-06-09

本文共 2570 字,大约阅读时间需要 8 分钟。

最近感觉做程序又开始浑浑噩噩,对设计模式和算法基本了解,但基本不会用。所以打算最近1个月把设计模式和算法重新,温故而知新下。

首先从程序开发经常涉及到的23种设计模式开始,希望这次能更加熟练的运用设计模式来加强自己的开发能力。

首先从单例模式开始:

单例模式在我的理解是对程序对象的缓存,防止不断new,保持对象唯一性,提高程序性能。

namespace SinglePattern {    class Program {        static void Main(string[] args) {            for (int i = 0; i < 100; i++)            {                Task.Run(() =>                {                    Singleton objSingleton = Singleton.GetInstance;                });            }            Console.Read();        }    }    public class Singleton    {        private static  Singleton _instance = null;        private static readonly  object _obj = new object();        private static bool _initialize = false;        private Singleton()        {                    }        public static Singleton GetInstance        {            get            {                ////第一种写法                if (_instance == null) {                    lock (_obj) {                        if (_instance == null) {                            _instance = new Singleton();                            Console.WriteLine("Create a singleton instance!");                        }                    }                }                            //第二种写法                //if (!_initialize)                //{                //    lock (_obj)                //    {                //        if (!_initialize)                //        {                //            _instance=new Singleton();                //            _initialize = true;                //            Console.WriteLine("Create a singleton instance!");                //        }                //    }                //}                return _instance;            }        }    }}

上面就是单例常用写法。但实际项目开发当中,我们不能对每一个类都要写成单例,所以解决这种情况,我就需要一个容器来保持单例。

把需要单例的对象保存进去。

下面是代码:

 

public class Singleton    {        private static readonly IDictionary
allSingletons; static Singleton() { allSingletons=new Dictionary
(); } public static IDictionary
AllSingletons { get { return allSingletons; } } } public class Singleton
: Singleton { private static T _instance; public static T Instance { get { return _instance; } set { _instance = value; AllSingletons[typeof (T)] = value; } } }

 

转载于:https://www.cnblogs.com/flyfish2012/p/3811505.html

你可能感兴趣的文章
Python和Singleton (单件)模式[转载]
查看>>
hibernate多对多单向(双向)关系映射
查看>>
二分查找题
查看>>
httpclient设置proxy与proxyselector
查看>>
IT常用单词
查看>>
拓扑排序
查看>>
NYOJ--32--SEARCH--组合数
查看>>
JMS
查看>>
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
21世纪经济网APP
查看>>
解决NetworkOnMainThreadException
查看>>
1039 到底买不买
查看>>
农银电商项目学习笔记(一)
查看>>
MockObject
查看>>
Chukwa
查看>>