设计模式——单例模式

简介:

       学习设计模式也有一段时间了,看了些书籍也一直在园子里关注设计模式的文章,无奈动手比较少,仅仅几个设计模式拿来应用过,其它的基本上仅限于了解概念而 已。悲哉!悲哉!前阵子在项目里居然发现可以应用单例模式,呵呵,颇有些惊喜。故写下面的。以此巩固和梳理自己的知识,加深理解。

  什么叫单例模式? 单例模式又叫做单态模式或者单件模式
     概念1(GOF):单例模式(Single)是指保证一个类仅有一个实例,并提供一个访问它的全局访问点 
     概念2:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类

     单例模式又分为:

  一 懒汉式单例:在类被加载的时候,唯一实例已经被创建     

     二、饿汉式单例 在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。

  三、登记式单例  这个单例实际上维护的是一组单例类的实例,将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。

  单例类的特点:

     1、单例类只能有一个实例
  2、单例类必须自己给自己创建自己的唯一的实例
     3、单例类必须给其他所有对象提供这一实例

一个类的对象的产生是由类构造函数来完成的,如果想限制对象的产生,就要将构造函数变为私有的(至少是受保护的),使得外面的类不能通过引用来产生 对象;同时为了保证类的可用性,就必须提供一个自己的对象以及访问这个对象的静态方法。通常我们可以让一个全局变量使得一个对象被访问。但它不能防止你实 例化多个对象,一个最好的方法就是,让类自身保存它的唯一实例,这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问改实例的方法
  

什么时候用单例模式?当某个类的初始化比较耗时,耗资源的时候,比如加载某些配置文件等,一般会选择单例模式。
单例模式一般用在你不想实例化多个对象的地方 ,比如WinForm里MDI窗口内的子窗体。

相关文章
|
19天前
|
设计模式 安全 Java
【设计模式系列笔记】单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点,以便全局范围内访问这个实例。单例模式的目标是限制一个类的实例化,确保在整个应用程序中只有一个实例存在,并提供对这个唯一实例的全局访问点。这对于控制对资源的访问、限制特定类的实例数量等场景非常有用。
122 5
|
2月前
|
设计模式 安全 测试技术
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
【C/C++ 设计模式 单例】单例模式的选择策略:何时使用,何时避免
65 0
|
2月前
|
设计模式 缓存 安全
【设计模式】单例模式:确保类只有一个实例
【设计模式】单例模式:确保类只有一个实例
24 0
|
1月前
|
设计模式 PHP
php设计模式--单例模式(三)
php设计模式--单例模式(三)
13 0
|
12天前
|
设计模式 安全 Java
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
|
4月前
|
设计模式 安全 Java
设计模式-单例模式
设计模式-单例模式
38 0
|
2月前
|
设计模式 安全 Java
设计模式之单例模式
设计模式之单例模式
|
10天前
|
设计模式 安全 Java
【设计模式学习】单例模式和工厂模式
【设计模式学习】单例模式和工厂模式
|
10天前
|
设计模式 安全 Java
|
12天前
|
设计模式 存储 安全
Java 设计模式:深入单例模式的理解与应用
【4月更文挑战第27天】单例模式是一种常用的设计模式,在 Java 开发中扮演着重要角色。此模式的主要目的是保证一个类只有一个实例,并提供一个全局访问点。
19 0