当前位置: 首页 > article >正文

C++常用设计模式

一、单例模式

1.1 含义

        单例模式适用于生成唯一对象、需要频繁创建和销毁的环境。

需求: 1. 构造函数、operator=、拷贝构造函数 私有化

             2. 构造一个静态指针

             3. 构造一个静态函数创建实例

1.2 懒汉模式

 懒汉:在第一个调用函数是才申请空间,但容易产生线程安全问题。

class SingleTon  {
private :
	SingleTon() {}
    SingleTon(const SingleTon& s) = delete;
    SingleTon& operator=(const SingleTon& s) = delete;
public :
	static SingleTon* singleTon;
	static SingleTon* getInstance() {
		if (singleTon == nullptr) {
			singleTon = new SingleTon;
		}

		return singleTon;
	}
};
SingleTon* SingleTon::singleTon = nullptr;

int main(int argc, char* argv[]) {

	SingleTon* ss = SingleTon::getInstance();

	return 0;
}

1.3 饿汉模式

 饿汉:直接在类外创建对象。程序已启动就申请了空间,线程安全,但占用资源。

class SingleTon  {
private :
	SingleTon() {}
    SingleTon(const SingleTon& s) = delete;
    SingleTon& operator=(const SingleTon& s) = delete;
public :
	static SingleTon* singleTon;
	static SingleTon* getInstance() {
		return singleTon;
	}
};
SingleTon* SingleTon::singleTon = nullptr;

int main(int argc, char* argv[]) {

	SingleTon* ss = new SingleTon;

	return 0;
}

 二、工厂模式

2.1 需求:

        1. 创建一个抽象工厂类:所有具体工厂类的父类

        2. 创建与产品对应的工厂类:负责实例化产品对象

        3. 提供一个抽象产品类:所有产品的父类

        4. 提供一个或多个产品类:共产模式所创建的具体对象实例


http://www.kler.cn/a/300552.html

相关文章:

  • 微服务学习:基础理论
  • 21天学通C++——11多态(引入多态的目的)
  • Redis可视化工具--RedisDesktopManager的安装
  • MySQL面试题2025 每日20道
  • 前端小案例——网页井字棋
  • cmake foreach 条件判断
  • 数据库视图和索引
  • 【iOS】Masnory的简单学习
  • 【PyQt6 应用程序】在用户登录界面实现密码密文保存复用
  • 若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)
  • 在Faster Rcnn 中,rpn网络是单独训练的吗
  • django学习入门系列之第十点《A 案例: 员工管理系统5》
  • 设置ssh连接超时自动断开
  • 网络安全工程师填补人才缺口
  • SpringSecurity原理解析(五):HttpSecurity 类处理流程
  • 【鸿蒙开发从0到1 day09】
  • Re-ReST: Reflection-Reinforced Self-Training for Language Agents论文学习
  • 建筑电焊工模拟试题(单选题附答案)
  • 大语言模型(LLM)与多模态大模型(MLLM)结合行人重识别(Reid)领域最新文献方法调研
  • C++ | Leetcode C++题解之第400题第N位数字
  • Java控制台+activiti+springboot+mybatis实现账务报销工作流程
  • 苹果发布新款iPhone 16,与Apple Intelligence配套:查看功能和价格
  • Chisel隧道
  • LeetCode之常用函数
  • CCF刷题计划——解压缩(stoi+bitset双管齐下)
  • git下载安装windows