- 浏览: 505184 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (329)
- [发布至博客园首页] (12)
- [随笔分类][01] .Net X (59)
- [随笔分类][20] Architecture (16)
- [随笔分类][21] Developer Logs (13)
- [网站分类]Windows 7 (1)
- [随笔分类][13] Oracle & .Net (7)
- [随笔分类][16] Love in China (14)
- [随笔分类][15] Development Tools (20)
- [随笔分类][18] Windows Phone (12)
- [随笔分类][12] Design & Pattern (17)
- [网站分类].NET新手区 (22)
- [网站分类]首页候选区 (2)
- [随笔分类][08] Windows (Server) (13)
- [随笔分类][02] CSLA.Net (3)
- [随笔分类][10] jQuery & javaScript (10)
- [随笔分类][11] SQL Server (4)
- [随笔分类][22] Enterprise Logs (3)
- [随笔分类][03] News (9)
- [随笔分类][19] Quality Assurance (2)
- [随笔分类][05] Silverlight (20)
- [随笔分类][14] Google Earth & .Net (6)
- [网站分类]非技术区 (9)
- [随笔分类][07] WWF (2)
- [随笔分类][04] SharePoint (1)
- [随笔分类][20] Analysis & Design (36)
- [随笔分类][06] WCF (5)
- [随笔分类][12] Architecture (1)
- [随笔分类][09] WPF (0)
- [随笔分类][17] VStudio & Expression (5)
最新评论
-
zhangyy130:
你好,我关于第二段的那个表视图、模型与图这三者的关系我没有看明 ...
UML模型的组成 -
guji528:
谢谢分享!
Enterprise Architect 基础应用 -
studentsky:
好文章,图文并茂!
WCF 第一个用 Visual Studio 2010 创建的WCF服务 -
chen975311486:
用哪个工具画的????
UML中对关系的描述 (二) -
frankies:
继续学习中。。
UML 交互概述图
重点概念
1. 所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。
2. 将构造方法私有化,并提供一个创建自己实例的方法,在方法中去做是否有实例化的判断,判断需要一个自己的静态变量。
3. 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
4. 让类自身负责保存它的唯一实例,这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。
5. 单例模式因为Singleton 类封装它的唯一实例,这样它可以严格地控制客户怎样访问它以及何时访问它。简单地说就是对唯一实例的受控访问。
6. lock 是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。
7.
8.
示例代码
using System; using System.Collections.Generic; using System.Text; namespace 单例模式 { class Program { static void Main(string[] args) { Singleton s1 = Singleton.GetInstance(); Singleton s2 = Singleton.GetInstance(); if (s1 == s2) { Console.WriteLine("两个对象相同。"); } Console.Read(); } } class Singleton { private static Singleton instance; private static readonly object syncRoot = new object(); /// <summary> /// 私有化构造函数,让外界不可以访问 /// </summary> private Singleton() { } /// <summary> /// 提供创建接口,用于控制实例化 /// </summary> /// <returns></returns> public static Singleton GetInstance() { // //两次判断中间加锁,叫做 “双重锁定” // //判断实例是否存在,第一时间判断有必要创建吗 if (instance == null) { //lock 在同一时刻加了所的那部分只有一个线程可以进入. lock (syncRoot) { //保证同时加锁等待的第二个线程进来不用重新创建,保证线程安全单例, if (instance == null) { instance = new Singleton(); } } } return instance; } } /// <summary> /// 这种方法是推荐方法 /// C#与公共哦你个语言运行库也提供了一种“静态初始化”方法,这种方法不需要开发人员显示地编写线程安全代码,即可解决多线程环境下不安全的问题 /// </summary> public sealed class Singleton { //Sealed 阻止派生,派生会增加实例 //标记为Readonly,这意味着只能在静态初始化期间或者构造函数中分配变量。 private static readonly Singleton instance = new Singleton(); private Singleton() { } public static Singleton GetInstance() { return instance; } } }
发表评论
-
享元模式(Flyweight)
2009-12-13 19:26 773重点概念 1. 这个模式相对简单。享元模式,就是在工厂 ... -
理解软件外包的种类
2009-12-17 21:11 557包项目 包人 包时间 -
解释器模式(Interpreter)
2009-12-20 14:02 618重要概念 1. 给定一个语言,定义它的文法的一种表示,并定义 ... -
访问者模式(Visitor)
2009-12-20 16:13 761重点概念 1. 双分派:得到执行的操作决定于请求的种类和接收 ... -
观察者(发布订阅)模式 与 委托事件
2009-12-02 17:07 1002多一些宽容 重点概念 1. 开放封闭原则,修改原有代码就说 ... -
抽象工厂模式(Abstract Factory)
2009-12-02 22:20 1057开闭原则和依赖倒置原则是面向对象设计的重点,编程是一门艺术,大 ... -
状态模式(State)
2009-12-03 17:53 679重点概念 1. 方法内容如果过长其实就有可能出了问题。 2. ... -
适配器模式(Adapter)
2009-12-03 22:59 717适配器模式比较简单常 ... -
备忘录模式(Memento)
2009-12-06 10:59 728重点概念 1. 希望把存取状态的细节封装起来,而且最好是封装 ... -
组合模式(Composite)
2009-12-06 15:39 620重要概念 1. 将对象组合成树形结构以表示‘部分-整体’的层 ... -
迭代器模式(Iterator)
2009-12-06 16:48 910C# 中已经实现了迭代器功能, foreach in 和 IE ... -
大型网站性能优化的通用方法
2009-12-10 12:56 7801、HTML静态化其实大家 ... -
桥接模式(Bridge)与合成/聚合复用原则(CARP)
2009-12-13 12:40 1054重要概念 1.合成/聚合 ... -
命令模式(Command)
2009-12-13 14:16 756重要概念 1.命令抽象类,也是命令模式的核心理解 2. ... -
职责链模式(Chain of Responsibility)
2009-12-13 16:13 1097重要概念 1. 使多个对象都有机会处理请求,从而避免请求的发 ... -
依赖倒转(依赖倒置)原则
2009-11-30 15:23 7731. 抽象不应该依赖细节,细节应该依赖于抽象(接口,抽象类)。 ... -
装饰模式(Decorator)
2009-11-30 18:32 782重点概念 1. 把所需的功能按正确的顺序串联起来进行控制。 ... -
代理模式(Proxy)
2009-11-30 21:55 720大话设计模式讲的和连环画一样,还可以接上,作者真用心,看起来很 ... -
工厂方法模式(Factory Method)
2009-12-01 10:57 910重要概念 本章内容围绕简单工厂与工厂方法的比较很好的说明了工 ... -
原型模式(Prototype)
2009-12-01 12:53 717重要概念回顾 1. 原型 ...
相关推荐
### 单例模式 Singleton Pattern #### 概述 单例模式是一种常见的设计模式,属于创建型模式之一。这种模式的核心在于确保某个类只有一个实例存在,并且提供一个全局访问点来获取该实例。单例模式在Java开发中尤其...
简单的单例模式举例Singleton 分为恶汉式 懒汉式
单例模式的特点有三: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,...
单例模式是一种设计模式,用于确保一个类在整个应用程序中只存在一个实例。这种模式在Java中广泛应用于需要全局访问点或资源管理的场景,比如配置管理、数据库连接池等。下面将详细阐述单例模式的实现方式、优化策略...
单例模式(Singleton Pattern)是一种常用的软件设计模式,它的核心思想是确保一个类在整个应用程序中只有一个实例存在,并提供一个全局访问点来获取这个实例。这种模式在很多场景下非常有用,比如管理系统资源、...
单例模式是软件设计模式中的一种,它的核心思想是确保一个类在整个系统中只有一个实例,并提供一个全局访问点。在Java或类似编程语言中,单例模式常常被用来管理资源,比如数据库连接、线程池或者配置信息,因为这些...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C++中,实现单例模式有多种方法,我们将会深入探讨这一模式的原理、优缺点以及如何在实际编程中应用。 单例模式的核心在于...
在Qt的Qml环境中,单例模式是一种设计模式,它允许在整个应用程序中创建一个全局访问点,确保某个类只有一个实例存在。这样的设计模式在需要共享数据或者服务时非常有用,避免了多处创建相同对象导致的数据不一致或...
单例模式(Singleton)是设计模式中最简单也是最有争议的一个模式。它主要解决的问题是确保一个类仅有一个实例,并提供一个全局访问点。单例模式适用于那些需要全局访问的场景,比如线程池、缓存、配置对象等。单例...
以下是对单例模式的详细阐述: 1. **单例模式的基本概念** - 单例模式的核心思想是限制类的实例化过程,只允许创建一个唯一的实例。 - 这个唯一的实例通常被静态方法管理,以保证在任何情况下都只有一个实例存在...
单例模式确保类只能有一个实例,并且提供一个全局访问点。在Objective-C中,通常通过以下方式实现: ```objc + (instancetype)sharedManager { static SoundManager *sharedInstance = nil; static dispatch_once...
在Go语言中,实现单例模式(Singleton Pattern)通常涉及确保一个类只有一个实例,并提供一个全局访问点来获取该实例。由于Go语言没有传统的类和对象概念,但具有结构体(struct)和函数,我们可以通过使用包级变量...
单例模式的核心思想是限制类的实例化,确保一个类只有一个实例。实现方式通常是将类的构造器设为私有,然后通过一个静态方法(通常称为getInstance)来获取唯一的实例。这样做既可以防止外部代码直接创建对象,又...
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
单例模式是一种在软件设计中常见的设计模式,它的核心目标是确保一个类只有一个实例,并提供一个全局访问点。在Java等面向对象编程语言中,单例模式常用于控制资源的共享,如全局配置、数据库连接池、日志服务等。...
这个程序会输出"Both references point to the same singleton instance.",证明了单例模式的正确实现。 总结来说,C++11通过`std::mutex`和`std::call_once`等工具,为实现线程安全的单例模式提供了强大支持。这种...
单例模式是软件设计模式中的一种,它保证一个类只有一个实例,并提供一个全局访问点。在C#中,单例模式常用于管理共享资源或控制类的实例化过程,以提高性能、节约系统资源,特别是在整个应用程序生命周期内只需要一...
单例模式是软件设计模式中的一种,属于创建型模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下都非常有用,例如管理共享资源、配置对象或者缓存服务等。 单例模式的核心...
单例模式是软件设计模式中的一种经典模式,用于确保一个类只有一个实例,并提供一个全局访问点。在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们...