常用的软件设计模式(一)单例模式

本文深入讲解单例模式,一种确保类只有一个实例的设计模式,并提供C#实现示例。探讨其优点,如统一实例管理和内存效率;缺点,如违反单一职责原则。适合希望理解并应用单例模式的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式:即一个类只有一个实例,在类里自己创建自己的实例。

优点:

(1)单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

(2)因为类控制了实例化过程,所以类可以灵活更改实例化过程。尤其是在C++中,每次new都要delete,而是用单例模式可以避免忘记delete造成的内存泄漏,只在本类的内部delete实例就可以了

(3)方便对实例进行管理,减少重复的代码,减少内存开销

缺点:

(1)应为内部实例化的对象为静态全局变量,因此没有接口,不能继承

(2)与单一职责原则(这个之后会做详细介绍)冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

该模式可以应用在很多编程语言上,这里以C#为例

//单例模式的一般实现
public class TxtManager
 {
    //私有对象记录唯一实例
   private static TxtManager instance;
 
   //让构造函数为 private,这样该类就不会被实例化
   private TxtManager(){}
 
   //获取唯一可用的对象的公有方法
   public static TxtManager getInstance()
   {
        if(null == instance)
        {
            instance = new TxtManager();
        }
      return instance;
   }
}


//调用
public class SingleDemo 
{
      //编译时错误:构造函数 SingleObject() 是不可见的
      //SingleObject object = new SingleObject();
 
      //获取唯一可用的对象
      TxtManager object = TxtManager.getInstance();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值