资讯详情

C++设计模式进阶:从单例到观察者,面试必考的23种设计模式实战全解析

📅 2026/9/28 18:10:31 | 华诺云谱 👁 阅读
C++设计模式进阶:从单例到观察者,面试必考的23种设计模式实战全解析
C++设计模式进阶:从单例到观察者,面试必考的23种设计模式实战全解析引言设计模式是C++程序员的内功心法,也是大厂面试的必考内容。掌握设计模式不仅能提升代码质量,更能展现你的架构能力。本文精选面试高频设计模式,通过C++实战代码帮你深入理解每种模式的精髓。一、创建型模式1.1 单例模式(Singleton)意图:保证一个类只有一个实例,并提供全局访问点。#includeiostream#includemutex// 线程安全的单例(C++11魔法静态变量)classSingleton{public:staticSingletongetInstance(){staticSingleton instance;// 线程安全returninstance;}voiddoSomething(){std::cout"Singleton doing work"std::endl;}// 删除拷贝和赋值Singleton(constSingleton)=delete;Singletonoperator=(constSingleton)=delete;private:Singleton(){std::cout"Singleton created"std::endl;}~Singleton()=default;};intmain(){Singleton::getInstance().doSomething();// Singleton::getInstance() = Singleton::getInstance(); // 编译错误return0;}面试要点:C++11保证局部静态变量线程安全删除拷贝构造和赋值运算符防止复制懒汉式 vs 饿汉式1.2 工厂模式(Factory)意图:定义创建对象的接口,让子类决定实例化哪个类。#includeiostream#includememory#includestring// 产品接口classButton{public:virtualvoidrender()=0;virtual~Button()=default;};// 具体产品classWindowsButton:publicButton{public:voidrender()override{std::cout"[Windows Button]"std::endl;}};classMacButton:publicButton{public:voidrender()override{std::cout"[Mac Button]"std::endl;}};// 工厂classButtonFactory{public:staticstd::unique_ptrButtoncreateButton(conststd::stringos){if(os=="windows")returnstd::make_uniqueWindowsButton();if(os=="mac")returnstd::make_uniqueMacButton();returnnullptr;}};intmain(){autobtn=ButtonFactory::createButton("windows");if(btn)btn-render();return0;}1.3 建造者模式(Builder)意图:将一个复杂对象的构建与表示分离。#includeiostream#includestring#includememoryclassHttpRequest{public
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑