设计模式3之c++单例模式(示例代码)

C++中的单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。
它通过将构造函数声明为私有(或受保护)来实现此目的,从而防止在程序中创建多个实例。该模式还提供了一种方法来访问该实例,通常是通过一个公共静态方法或一个全局函数。
单例模式在许多情况下都有用,例如在需要共享资源或需要确保只有一个对象时。例如,在多线程环境中,单例模式可以确保只有一个线程访问共享资源,从而避免竞争条件和死锁。

优点

  • 单例模式可以保证一个类只有一个实例,避免了多个实例造成的资源浪费和冲突。

  • 单例模式可以提供全局访问点,方便其他类访问该实例,提高代码复用性和灵活性。

缺点

  • 单例模式可能会对单例类进行全局状态管理,导致代码可测试性变差。
  • 单例模式的实现方式可能会引入线程安全问题,需要进行线程安全的设计和实现。
  • 单例模式可能会导致系统的耦合性增加,如果单例类被大量使用,可能会导致整个系统的灵活性变差。

以下是一个简单的C++单例模式实现示例:

class Singleton {
private:
    static Singleton* instance;
    Singleton() {} // 构造函数私有化,防止外部创建实例
public:
    static Singleton* getInstance() {
        if (instance == nullptr) {
            instance = new Singleton();
        }
        return instance;
    }
    void doSomething() {
        // 单例类的其他方法
    }
};
Singleton* Singleton::instance = nullptr; // 静态成员变量初始化
int main() {
    Singleton* instance1 = Singleton::getInstance();
    Singleton* instance2 = Singleton::getInstance();
    if (instance1 == instance2) {
        cout << "instance1 and instance2 are the same instance." << endl;
    }
    return 0;
}

在这个示例中,我们将构造函数私有化,以防止外部创建实例。getInstance()方法返回单例实例的唯一全局访问点。当第一次调用getInstance()方法时,它将创建一个新实例,然后返回它。在后续调用中,它只是简单地返回先前创建的实例。在main()函数中,我们创建两个Singleton实例,但由于它是单例类,它们实际上是同一个实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值