个人网站设计要求襄阳做网站比较有实力的公司

张小明 2025/12/26 12:17:22
个人网站设计要求,襄阳做网站比较有实力的公司,抖音代运营服务商,商场大型话题活动策划网站C 设计模式概述 本文介绍了C中23种设计模式的分类及实现示例#xff0c;主要分为三大类#xff1a;创建型模式#xff08;5个#xff09;#xff1a;单例模式#xff08;常用#xff09;、工厂方法模式#xff08;常用#xff09;、抽象工厂模式#xff08;常用…C 设计模式概述本文介绍了C中23种设计模式的分类及实现示例主要分为三大类创建型模式5个单例模式常用、工厂方法模式常用、抽象工厂模式常用、建造者模式和原型模式。这些模式专注于对象的创建机制。结构型模式7个适配器模式常用、桥接模式、组合模式和装饰器模式常用等。这些模式处理类和对象的组合方式。行为型模式未完整列出但包含观察者模式等未展示完整代码。文章通过简洁的C代码示例展示了常用设计模式的实现方法如单例模式通过私有构造函数和静态方法确保唯一实例工厂方法模式通过抽象工厂类创建产品等。这些模式为解决特定设计问题提供了可重用的解决方案。C 设计模式概述及常用模式设计模式可分为三大类创建型、结构型、行为型。以下是23个设计模式的分类及代码示例一、创建型模式5个1. 单例模式Singleton⭐常用classSingleton{private:staticSingleton*instance;Singleton(){}// 私有构造函数public:staticSingleton*getInstance(){if(instancenullptr){instancenewSingleton();}returninstance;}// 删除拷贝构造和赋值操作符Singleton(constSingleton)delete;Singletonoperator(constSingleton)delete;};2. 工厂方法模式Factory Method⭐常用// 产品接口classProduct{public:virtual~Product(){}virtualvoidoperation()0;};// 具体产品classConcreteProductA:publicProduct{public:voidoperation()override{coutProduct A operationendl;}};// 工厂接口classCreator{public:virtual~Creator(){}virtualProduct*factoryMethod()0;};// 具体工厂classConcreteCreatorA:publicCreator{public:Product*factoryMethod()override{returnnewConcreteProductA();}};3. 抽象工厂模式Abstract Factory⭐常用// 抽象产品AclassAbstractProductA{public:virtual~AbstractProductA(){}virtualvoidoperationA()0;};// 抽象产品BclassAbstractProductB{public:virtual~AbstractProductB(){}virtualvoidoperationB()0;};// 抽象工厂classAbstractFactory{public:virtualAbstractProductA*createProductA()0;virtualAbstractProductB*createProductB()0;};// 具体工厂1classConcreteFactory1:publicAbstractFactory{public:AbstractProductA*createProductA()override{returnnewConcreteProductA1();}AbstractProductB*createProductB()override{returnnewConcreteProductB1();}};4. 建造者模式BuilderclassProduct{private:string partA;string partB;public:voidsetPartA(conststringa){partAa;}voidsetPartB(conststringb){partBb;}};classBuilder{public:virtual~Builder(){}virtualvoidbuildPartA()0;virtualvoidbuildPartB()0;virtualProduct*getResult()0;};classDirector{private:Builder*builder;public:Director(Builder*b):builder(b){}voidconstruct(){builder-buildPartA();builder-buildPartB();}};5. 原型模式PrototypeclassPrototype{public:virtual~Prototype(){}virtualPrototype*clone()const0;virtualvoidprint()const0;};classConcretePrototype:publicPrototype{private:intdata;public:ConcretePrototype(intd):data(d){}Prototype*clone()constoverride{returnnewConcretePrototype(*this);}voidprint()constoverride{coutData: dataendl;}};二、结构型模式7个6. 适配器模式Adapter⭐常用// 目标接口classTarget{public:virtual~Target(){}virtualvoidrequest(){coutTarget requestendl;}};// 需要适配的类classAdaptee{public:voidspecificRequest(){coutAdaptee specific requestendl;}};// 适配器classAdapter:publicTarget{private:Adaptee*adaptee;public:Adapter(Adaptee*a):adaptee(a){}voidrequest()override{adaptee-specificRequest();}};7. 桥接模式Bridge// 实现接口classImplementor{public:virtual~Implementor(){}virtualvoidoperationImpl()0;};// 抽象类classAbstraction{protected:Implementor*impl;public:Abstraction(Implementor*i):impl(i){}virtual~Abstraction(){}virtualvoidoperation(){impl-operationImpl();}};8. 组合模式CompositeclassComponent{public:virtual~Component(){}virtualvoidoperation()0;virtualvoidadd(Component*){}virtualvoidremove(Component*){}virtualComponent*getChild(int){returnnullptr;}};classLeaf:publicComponent{public:voidoperation()override{coutLeaf operationendl;}};classComposite:publicComponent{private:vectorComponent*children;public:voidoperation()override{coutComposite operationendl;for(autochild:children){child-operation();}}voidadd(Component*c)override{children.push_back(c);}};9. 装饰器模式Decorator⭐常用classComponent{public:virtual~Component(){}virtualvoidoperation()0;};classConcreteComponent:publicComponent{public:voidoperation()override{coutConcreteComponent operationendl;}};classDecorator:publicComponent{protected:Component*component;public:Decorator(Component*c):component(c){}voidoperation()override{component-operation();}};classConcreteDecorator:publicDecorator{public:ConcreteDecorator(Component*c):Decorator(c){}voidoperation()override{Decorator::operation();addedBehavior();}voidaddedBehavior(){coutAdded behaviorendl;}};10. 外观模式Facade⭐常用classSubsystemA{public:voidoperationA(){coutSubsystem A operationendl;}};classSubsystemB{public:voidoperationB(){coutSubsystem B operationendl;}};classFacade{private:SubsystemA*a;SubsystemB*b;public:Facade():a(newSubsystemA()),b(newSubsystemB()){}voidoperation(){a-operationA();b-operationB();}};11. 享元模式FlyweightclassFlyweight{public:virtual~Flyweight(){}virtualvoidoperation(intextrinsicState)0;};classConcreteFlyweight:publicFlyweight{private:intintrinsicState;public:ConcreteFlyweight(intstate):intrinsicState(state){}voidoperation(intextrinsicState)override{coutIntrinsic: intrinsicState, Extrinsic: extrinsicStateendl;}};classFlyweightFactory{private:unordered_mapint,Flyweight*flyweights;public:Flyweight*getFlyweight(intkey){if(flyweights.find(key)flyweights.end()){flyweights[key]newConcreteFlyweight(key);}returnflyweights[key];}};12. 代理模式Proxy⭐常用classSubject{public:virtual~Subject(){}virtualvoidrequest()0;};classRealSubject:publicSubject{public:voidrequest()override{coutRealSubject requestendl;}};classProxy:publicSubject{private:RealSubject*realSubject;public:Proxy():realSubject(nullptr){}voidrequest()override{if(realSubjectnullptr){realSubjectnewRealSubject();}realSubject-request();}};三、行为型模式11个13. 责任链模式Chain of ResponsibilityclassHandler{protected:Handler*successor;public:Handler():successor(nullptr){}virtual~Handler(){}voidsetSuccessor(Handler*s){successors;}virtualvoidhandleRequest(intrequest)0;};classConcreteHandler1:publicHandler{public:voidhandleRequest(intrequest)override{if(request10){coutHandler1 handled request requestendl;}elseif(successor!nullptr){successor-handleRequest(request);}}};14. 命令模式Command⭐常用classReceiver{public:voidaction(){coutReceiver actionendl;}};classCommand{public:virtual~Command(){}virtualvoidexecute()0;};classConcreteCommand:publicCommand{private:Receiver*receiver;public:ConcreteCommand(Receiver*r):receiver(r){}voidexecute()override{receiver-action();}};classInvoker{private:Command*command;public:voidsetCommand(Command*c){commandc;}voidexecuteCommand(){command-execute();}};15. 解释器模式InterpreterclassContext{// 上下文信息};classExpression{public:virtual~Expression(){}virtualboolinterpret(Contextcontext)0;};classTerminalExpression:publicExpression{public:boolinterpret(Contextcontext)override{// 终结符解释逻辑returntrue;}};16. 迭代器模式Iterator⭐常用templatetypenameTclassIterator{public:virtual~Iterator(){}virtualTnext()0;virtualboolhasNext()0;};templatetypenameTclassConcreteIterator:publicIteratorT{private:vectorTcollection;size_t position;public:ConcreteIterator(constvectorTcol):collection(col),position(0){}Tnext()override{returncollection[position];}boolhasNext()override{returnpositioncollection.size();}};17. 中介者模式MediatorclassColleague;classMediator{public:virtual~Mediator(){}virtualvoidnotify(Colleague*sender,string event)0;};classColleague{protected:Mediator*mediator;public:Colleague(Mediator*mnullptr):mediator(m){}voidsetMediator(Mediator*m){mediatorm;}};classConcreteColleague1:publicColleague{public:voiddoSomething(){// ... 自己的逻辑mediator-notify(this,event1);}};18. 备忘录模式MementoclassMemento{private:string state;public:Memento(conststrings):state(s){}stringgetState()const{returnstate;}};classOriginator{private:string state;public:voidsetState(conststrings){states;}stringgetState()const{returnstate;}Memento*createMemento(){returnnewMemento(state);}voidrestoreMemento(Memento*m){statem-getState();}};19. 观察者模式Observer⭐常用classObserver{public:virtual~Observer(){}virtualvoidupdate(floattemperature)0;};classSubject{private:vectorObserver*observers;public:voidattach(Observer*o){observers.push_back(o);}voiddetach(Observer*o){// 移除观察者逻辑}voidnotify(floattemperature){for(autoobserver:observers){observer-update(temperature);}}};classConcreteObserver:publicObserver{public:voidupdate(floattemperature)override{coutTemperature updated: temperatureendl;}};20. 状态模式StateclassContext;classState{public:virtual~State(){}virtualvoidhandle(Context*context)0;};classContext{private:State*state;public:Context(State*s):state(s){}voidsetState(State*s){states;}voidrequest(){state-handle(this);}};classConcreteStateA:publicState{public:voidhandle(Context*context)override;};21. 策略模式Strategy⭐常用classStrategy{public:virtual~Strategy(){}virtualvoidalgorithm()0;};classConcreteStrategyA:publicStrategy{public:voidalgorithm()override{coutStrategy A algorithmendl;}};classContext{private:Strategy*strategy;public:Context(Strategy*s):strategy(s){}voidsetStrategy(Strategy*s){strategys;}voidexecuteStrategy(){strategy-algorithm();}};22. 模板方法模式Template Method⭐常用classAbstractClass{public:virtual~AbstractClass(){}voidtemplateMethod(){primitiveOperation1();primitiveOperation2();}virtualvoidprimitiveOperation1()0;virtualvoidprimitiveOperation2()0;};classConcreteClass:publicAbstractClass{public:voidprimitiveOperation1()override{coutConcrete operation 1endl;}voidprimitiveOperation2()override{coutConcrete operation 2endl;}};23. 访问者模式VisitorclassConcreteElementA;classConcreteElementB;classVisitor{public:virtual~Visitor(){}virtualvoidvisit(ConcreteElementA*element)0;virtualvoidvisit(ConcreteElementB*element)0;};classElement{public:virtual~Element(){}virtualvoidaccept(Visitor*visitor)0;};classConcreteElementA:publicElement{public:voidaccept(Visitor*visitor)override{visitor-visit(this);}voidoperationA(){coutOperation Aendl;}};四、最常用的设计模式建议优先掌握必须掌握的5个核心模式单例模式- 全局唯一实例如配置管理器、日志管理器工厂方法模式- 对象创建解耦易于扩展观察者模式- 事件处理、消息通知系统策略模式- 算法封装运行时切换装饰器模式- 动态添加功能次常用的5个模式适配器模式- 接口转换代理模式- 访问控制、延迟加载模板方法模式- 算法框架定义命令模式- 命令封装、撤销/重做外观模式- 简化复杂子系统接口学习建议先从单例、工厂、观察者、策略开始学习理解每种模式的应用场景而不仅仅是代码避免过度设计只在必要时使用设计模式C11/14/17的现代特性智能指针、lambda等可以简化某些模式的实现这些模式提供了经过验证的解决方案能帮助你构建更灵活、可维护的软件系统。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

上海的设计网站军事新闻

本示例面向对物联网与 Arduino 生态感兴趣的初学者与进阶者,一步一步实现“Blinking LED from Arduino Cloud”示例的原理与操作方案。我们将通过Arduino Cloud 网页端的仪表盘创建一个开关,远程控制Arduino UNO Q 板上自带的LED。要实现这一点&#xff…

张小明 2025/12/26 12:16:48 网站建设

哪些做调查问卷挣钱的网站php源码论坛

在数字内容创作与团队协作中,高效、可控的图片托管与管理一直是个痛点。将图片存储在第三方平台面临链接失效、收费涨价和安全风险。今天,我们将介绍如何通过 Docker容器化技术,快速搭建一个属于自己或团队的私有图床——Lsky Pro&#xff0c…

张小明 2025/12/26 12:16:14 网站建设

上海网站建设报价单子现说企业网站建设推广公司

Qwen3-VL-8B 多模态位置编码深度解析:从设计到落地 在当前多模态AI迅猛发展的背景下,如何让模型真正“看懂”图像并“理解”文本之间的空间与语义关系,成为视觉-语言任务的核心挑战。以图文检索、视觉问答(VQA)和图像描…

张小明 2025/12/26 12:15:08 网站建设

如何建网站做推广企业管理app软件

IEC 61158-6工业控制总线标准完整指南:从入门到精通 【免费下载链接】IEC61158-6工业控制总线标准PDF下载分享 IEC 61158-6工业控制总线标准PDF下载 项目地址: https://gitcode.com/Open-source-documentation-tutorial/11472 标准概述与核心价值 IEC 61158…

张小明 2025/12/26 12:14:35 网站建设

临西企业做网站90设计包图网

LangFlow与HuggingFace集成:无缝调用开源大模型 在构建智能对话系统或知识问答引擎的今天,一个常见的挑战是:如何在没有庞大工程团队的情况下,快速验证一个基于大语言模型(LLM)的想法?传统方式需…

张小明 2025/12/26 12:14:02 网站建设

做网站用什么版本系统家在深圳布吉论坛

5步打造惊艳交互地图:从数据到叙事的完整实战指南 【免费下载链接】odyssey.js Making it easy to merge map and narrative 项目地址: https://gitcode.com/gh_mirrors/od/odyssey.js 想要让枯燥的地理数据变成引人入胜的视觉故事吗?odyssey.js作…

张小明 2025/12/26 12:13:29 网站建设