auto_ptr for singleton pattern

本文介绍了一种使用C++实现单例模式的方法。通过定义一个Singleton类,并利用std::auto_ptr来确保类的唯一实例。该实现包括了一个静态成员函数instance()用于获取Singleton类的唯一实例。

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

Singleton.h中代码

 

Singleton.cpp中实现

 

 

### 23种设计模式的记忆顺口溜 为了帮助记忆23种设计模式,可以使用以下顺口溜: #### 创建型模式(5种) - **抽工建单原** 抽象工厂模式(Abstract Factory)、工厂方法模式(Factory Method)、建造者模式(Builder)、单例模式(Singleton)、原型模式(Prototype)[^1]。 #### 结构型模式(7种) - **代桥外享适组装** 代理模式(Proxy)、桥接模式(Bridge)、外观模式(Facade)、享元模式(Flyweight)、适配器模式(Adapter)、组合模式(Composite)、装饰器模式(Decorator)[^1]。 #### 行为型模式(11种) - **策观命备状命中责备模访** 策略模式(Strategy)、观察者模式(Observer)、命令模式(Command)、备忘录模式(Memento)、状态模式(State)、模板方法模式(Template Method)、责任链模式(Chain of Responsibility)、中介者模式(Mediator)、迭代器模式(Iterator)、访问者模式(Visitor)、解释器模式(Interpreter)。 ### 示例代码 以下是一个简单的示例,展示如何使用单例模式(Singleton Pattern)来确保一个类只有一个实例: ```cpp #include <iostream> #include <memory> class Singleton { private: static std::shared_ptr<Singleton> instance; Singleton() {} // 私有构造函数 public: static std::shared_ptr<Singleton> getInstance() { if (!instance) { instance = std::make_shared<Singleton>(); } return instance; } }; std::shared_ptr<Singleton> Singleton::instance = nullptr; int main() { auto s1 = Singleton::getInstance(); auto s2 = Singleton::getInstance(); if (s1 == s2) { std::cout << "Both are the same instance." << std::endl; } return 0; } ``` ### 设计模式的分类与作用 设计模式分为三类:创建型、结构型和行为型。创建型模式关注对象的创建过程,结构型模式关注类或对象的组合,行为型模式关注对象之间的通信和职责分配[^2]。 ### 记忆技巧 通过将模式名称转化为易于记忆的词汇或短语,结合顺口溜的形式,可以显著提高记忆效率。例如,“抽工建单原”中的“抽”代表抽象工厂模式,“工”代表工厂方法模式,“建”代表建造者模式,“单”代表单例模式,“原”代表原型模式[^3]。 ### 注意事项 在实际应用中,选择合适的设计模式需要根据具体问题场景进行分析。过度使用设计模式可能导致代码复杂度增加,因此应权衡利弊,合理使用[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值