c++设计模式
<( ̄︶ ̄)Okay.
<( ̄︶ ̄)↗[GO!]
展开
-
【31】c++设计模式——>模板方法模式
基本操作方法也在抽象基类中被声明为虚函数,但是可以被子类重写以实现具体的步骤。2.原创 2023-10-23 14:16:28 · 288 阅读 · 0 评论 -
【30】c++设计模式——>状态模式
状态模式是一种,它可以让一个对象在其内部状态发生变化时更改其行为。通过将每个状态封装成一个独立的类,我们可以使状态之间互相独立,并且使得状态的切换变得更加灵活、可扩展。(多个状态之间可以相互转换)在状态模式中,我们通常会定义一个抽象状态类(Abstract State),以及多个具体状态类(Concrete States)。每个具体状态都会实现抽象状态类中定义的各种操作,并且在需要时执行状态转换。原创 2023-10-23 11:55:37 · 315 阅读 · 0 评论 -
【29】c++设计模式——>策略模式
C++中的策略模式(Strategy Pattern)是一种行为型设计模式,它允许在运行时选择算法的行为。策略模式通过将算法封装成独立的类,并且使它们,从而使得算法的变化独立于使用算法的客户端。原创 2023-10-22 21:45:45 · 407 阅读 · 0 评论 -
【28】c++设计模式——>观察者模式(1)
C++观察者模式(Observer Pattern)是一种设计模式,它用于在对象之间建立一种一对多的依赖关系。在该模式中,当一个对象(称为主题)发生变化时,所有依赖于它的对象(称为观察者)都会得到通知并自动更新。原创 2023-10-22 18:52:35 · 339 阅读 · 0 评论 -
【27】c++设计模式——>迭代器模式(遍历双向链表)(2)
【代码】【27】c++设计模式——>迭代器模式(遍历双向链表)(2)原创 2023-10-21 23:58:32 · 429 阅读 · 0 评论 -
【27】c++设计模式——>迭代器模式(1)
迭代器实现通常包含两个主要组件:迭代器和聚合对象,聚合对象一般是vector,list,set,map等,迭代器负责在聚合对象上进行遍历,并提供了一种统一的访问元素的方法。聚合对象用来存储,并提供创建迭代器的接口。通过将遍历算法与聚合对象分离开来。原创 2023-10-20 16:54:02 · 588 阅读 · 0 评论 -
【26】c++设计模式——>命令模式
C++的命令模式是一种行为模式,通过将请求封装成对象,以实现请求发送者和接受者的解耦。在命令模式中,,这个对象包含的执行该操作的方法,以及一些必要的参数。命令对象可以被任意添加、删除或者修改,从而使得请求的发送者和接受者之间的关系变得灵活可配。命令模式通过包含以下角色:1.命令接口:定义了执行操作的方法;2.具体命令:实现了命令接口,封装了具体的操作和接受者;3.请求发送者:持有命令对象,并在需要时调用命令对象的执行方法来发起请求;4.请求接受者:执行命令对象所指定的操作。原创 2023-10-15 22:01:20 · 348 阅读 · 0 评论 -
【25】c++设计模式——>责任链模式
C++中的责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它通过将请求沿着处理对象的链传递来避免把请求发送者与接收者耦合在一起。责任链模式的主要思想是,通过将多个处理对象组成一条链,每个处理对象都有机会处理请求。如果某个对象不能处理请求,则将请求传递给下一个对象依次处理,直到请求被处理为止。责任链模式通常涉及以下几个角色:1.请求(request):封装了需要进行处理的信息,以便于在责任链上传递。原创 2023-10-14 20:17:56 · 545 阅读 · 0 评论 -
【24】c++设计模式——>代理模式
C++中的代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过引入一个代理对象来控制对另一个对象的访问。代理模式通常涉及以下几个角色:1.抽象主题(Subject):定义了真实主题和代理主题的共同接口,这样代理可以在任何时候都可以替代真实主题。2.真实主题(Real Subject):是实际执行业务逻辑的对象,代理将请求委托给真实主题。3.代理(Proxy):拥有与真实主题相同的接口,它可以访问、控制或者扩展真实主题的功能。原创 2023-10-14 15:24:03 · 466 阅读 · 0 评论 -
【23】c++设计模式——>享元模式
1.结构型设计模式2.旨在通过共享对象来最小化内存使用和提高性能3.享元模式将对象分为可共享的内部状态和不可共享的外部状态,。原创 2023-10-14 14:49:49 · 107 阅读 · 0 评论 -
【22】c++设计模式——>外观模式
为复杂系统提供一个简化接口,它通过创建一个高层接口(外观),将多个子系统的复杂操作封装起来,以便客户端更容易使用。原创 2023-10-11 23:22:10 · 332 阅读 · 0 评论 -
【21】c++设计模式——>装饰模式
装饰模式也可以称为封装模式,所谓的封装就是在原有行为之上进行扩展,并不会改变该行为;例如网络通信:在进行网络通信的时候,数据是基于IOS七层或四层网络模型(某些层合并之后就是四层模型)进行传输,通过下图可得知从应用层到物理层,数据每向下走一层就会被封装一层,最后将封装好的数据以比特流的方式发送给接收端。封装之后数据只是变得更复杂了, 并没有改变它是数据的本质。加解密是对数据的装饰,但是没有改变数据的本质。防护服是对人的装饰,没有改变本体是人的本质。原创 2023-10-11 00:15:01 · 196 阅读 · 0 评论 -
【20】c++设计模式——>组合模式
C++组合模式(Composite Pattern)是一种结构型设计模式,他允许将对象组合成树形结构来表示“部分-整体”的层次结构;在组合模式中有两种基本类型的对象:叶子对象和组合对象,叶子对象时没有子对象的,而组合对象则是拥有子对象的。叶子对象和组合对象都实现了相同的接口,以便可以用相同的方式处理他们。原创 2023-10-09 01:06:08 · 856 阅读 · 0 评论 -
【18】c++设计模式——>适配器模式
Adapter 是适配器,继承了 ITarget 接口,并私有继承了 Adaptee 类,在实现 targetMethod() 方法时调用了 adapteeMethod() 方法。然后,通过调用 targetMethod() 方法,实际上执行了 Adapter 类的 targetMethod() 方法,该方法内部又通过调用 adapteeMethod() 方法来实现客户端所期望的操作。总结来说,适配器模式是一种将不符合客户端需求的类或接口转换成符合需求的类或接口的设计模式。原创 2023-10-06 23:54:06 · 389 阅读 · 0 评论 -
【19】c++设计模式——>桥接模式
C++的桥接模式(Bridge Pattern)是一种结构型设计模式,它将抽象部分与实现部分分离,使得它们可以独立地变化。桥接模式的核心思想是利用组合关系代替继承关系,将系统划分成多个独立的、功能不同的类层次结构,并通过桥接类将它们连接起来。在桥接模式中,有两个重要的概念:抽象化(Abstraction)和实现化(Implementation),它们分别对应了系统的抽象部分和实现部分。抽象化负责定义接口,并维护一个指向实现化对象的指针;实现化则负责定义具体的实现方法。原创 2023-10-08 06:37:08 · 525 阅读 · 0 评论 -
【17】c++设计模式——>原型模式
c++中的原型模式(Prototype Pattern)是一种创建型设计模式,其目的是通过复制(克隆)已有对象来创建新的对象,而不需要显示的使用构造函数创建对象,原型模式适用于创建复杂对象时,避免构造函数的重复调用和初始化步骤,提高了对象创建的效率。在c++中实现原型模式,可以通过一下步骤:1.创建一个抽象基类,作为原型类,其中定义一个纯虚函数clone(),用于克隆对象。2.派生具体的类,并实现clone()函数,在clone函数中,创建当前实例的副本,并返回指向副本的指针。原创 2023-10-06 22:34:10 · 590 阅读 · 0 评论 -
【16】c++设计模式——>建造者(生成器)模式
这是一个接口,定义了创建产品所需的各个步骤的方法。3.原创 2023-10-06 19:08:15 · 1061 阅读 · 0 评论 -
【15】c++设计模式——>抽象工厂模式
在海贼世界中,位于水之都的弗兰奇一家是由铁人弗兰奇所领导的以拆船为职业的家族,当然了他们的逆向工程做的也很好,会拆船必然会造船。船是海贼们出海所必备的海上交通工具,它由很多的零件组成,从宏观上看它有这么几个组成部分:船体动力系统武器。根据这个表,在造船的时候需要根据不同的型号选择相应的零部件,在设计程序的时候还需要保证遵循开放-封闭原则,即添加了新型号之后不需要修改原有代码,而是添加新的代码。原创 2023-10-05 22:48:32 · 222 阅读 · 0 评论 -
【14】c++设计模式——>工厂模式
简单工厂模式只有一个工厂类,而工厂模式是有一个基类,多个子类,基类中包含一个虚工厂函数,多个子类重写父类的工厂函数。每个子工厂类负责生产一种类,这相当于再次解耦,将工厂类再次拆分细化。抽象类不能直接构造对象,因为他是一种抽象的概念,没有具体的实现,如果想对象一个对象,需要创建一个继承自抽象类的具体类,并在该类中实现所有的纯虚函数,然后可以构造该具体类。,即工厂类在数据增加时需要被修改,而我们在设计时对于已经设计好的类需要避免修改的操作,而选用扩展的方式。简单工厂模式虽然简单,但是违反了设计模式中的。原创 2023-10-05 20:27:32 · 293 阅读 · 0 评论 -
【13】c++设计模式——>简单工厂模式
c++中的工厂模式是一种创建型设计模式,它提供一种创建对象的接口,但具体创建的对象类型可以在运行时决定,这样可以将对象的创建与使用代码分离,提高代码的灵活性和可维护性。在c++中实现工厂模式,通常会定义一个工厂类,该类负责创建对象。工厂类通常具有一个公共的创建接口,可以根据传入的参数或者条件来返回不同类型的对象,这样客户端代码只需要与工厂类进行交互,而无需了解具体对象的创建细节。原创 2023-10-05 19:24:11 · 182 阅读 · 0 评论 -
【12】c++设计模式——>单例模式练习(任务队列)
(1)存储任务的容器,这个容器可以选择使用STL中的队列(queue)(2)互斥锁,多线程访问的时候用于保护任务队列中的数据。方法:主要是对任务队列中的任务进行操作。(2)往任务队列中添加一个任务。(3)从任务队列中取出一个任务。(4)从任务队列中删除一个任务。(1)任务队列中任务是否为空。原创 2023-10-04 23:57:13 · 547 阅读 · 0 评论 -
【11】c++设计模式——>单例模式
如果线程A按照第二种顺序执行机器指令,执行完前两步之后失去CPU时间片被挂起了,此时线程B在第3行处进行指针判断的时候m_taskQ 指针是不为空的,但这个指针指向的内存却没有被初始化,最后线程 B 使用了一个没有被初始化的队列对象就出问题了(出现这种情况是概率问题,需要反复的大量测试问题才可能会出现)。在上面代码的10~13 行这个代码块被互斥锁锁住了,也就意味着不论有多少个线程,同时执行这个代码块的线程只能是一个(相当于是严重限行了,在重负载情况下,可能导致响应缓慢)。单例模式的典型应用就是任务队列。原创 2023-10-04 21:46:14 · 503 阅读 · 0 评论 -
【10】c++设计模式——>依赖倒转原则
关于依赖倒转原则,对应的是两条非常抽象的描述:1.高层模块不应该依赖低层模块,两个都应该依赖抽象。2.抽象不应该依赖细节,细节应该依赖抽象。原创 2023-10-04 17:23:34 · 832 阅读 · 0 评论 -
【9】c++设计模式——>开放封闭原则
该原则是程序设计的一种理想模式,在很多情况下无法做到完全的封闭,但是作为设计人员,应该能够对自己设计的模块在哪些位置产生何种变化了然于胸,因此需要在这些位置创建抽象类来隔离以后发生的这些同类变化(其实就是对。开放-封闭原则说的是软件实体(类,模块,函数等)可以扩展,但是不可以修改,也就是说。的应用,创建新的子类并重写父类虚函数,用以更新处理动作)。原创 2023-10-04 16:02:01 · 344 阅读 · 0 评论 -
【8】c++设计模式——>单一职责原则
如果一个类承担的职责过多,就等于把这些职责耦合到了一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。指的就是将单一事物抽象出来组合成一个类,所以我们在设计类的时候每个类中处理的是单一事物而不是某些事物的集合。让类的功能单一,不让类与具体的事物耦合。软件设计真正要做的事情就是,发现根据需求发现职责,并把这些职责进行分离,添加新的类,给当前类减负,越是这样项目才越容易维护。设计模式中所谓的单一职责原则,就是对一个类而言,应该仅有一个引起它变化的原因,其实就是将这个类所承担的职责单一化。原创 2023-10-04 15:19:24 · 442 阅读 · 0 评论 -
【7】c++设计模式——>UML(关联关系、聚合关系、组合关系之间的区别)
聚合关系:树倒猢狲散,即整体被析构销毁了,部分还存在,并且在其他地方可以继续使用,因为部分是在整体之外创建的。类之间的关系强弱顺序是这样的:继承(泛化) > 组合 > 聚合 > 关联 > 依赖。组合关系:一条绳上的蚂蚱,整体被析构销毁,部分也会跟着被销毁。画UML图的时候使用最强的那种关系连接。关联关系:一般是平等的关系。原创 2023-10-04 14:57:24 · 83 阅读 · 0 评论 -
【6】c++设计模式——>UML表示类之间的依赖关系
树木(Tree)的生长,需要将空气(Air)、水(Water)、土壤(Soil)对象作为参数传递给 Tree 类的 grow()方法。依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系,大多数情况下依赖关系体现。驾驶员(Driver)开车,需要将车(Car)对象作为参数传递给 Driver 类的drive()方法。2.在一个类的方法中将另一个类的对象作为其对象的局部变量。原创 2023-10-04 14:47:02 · 223 阅读 · 0 评论 -
【5】c++设计模式——>UML表示类之间的组合关系
因为组合关系的整体和部分是共生关系,整体的实例对象被析构的时候,他的子对象也会一并被析构。如果通过外部注入,即使整体不存在了,部分还是存在的,这样的话就变成了聚合关系了。组合关系也表示一种整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在了,成员对象也不存在了,整体对象和成员对象之间具有同生死的关系。树(Tree)和 树根(Root)、树干(Trunk)、树枝(Branch)、树叶(Leaf)当整体对象被析构销毁,部分也跟着销毁了。在UML中组合关系用带。原创 2023-10-04 14:15:42 · 96 阅读 · 0 评论 -
【4】c++设计模式——>UML表示类之间的聚合关系
聚合关系表示整体与部分的关系,在聚合关系中,成员对象时整体的一部分,但是成员对象可以脱离整体对象独立存在,当整体被析构销毁的时候,组成整体的这些子对象是不会被销毁的,是可以继续存活,并在其他地方使用的。在UML中,聚合关系用空心菱形的直线表示.(Forest)与 植物(Plant)、动物(Animal)、水(Water)、阳光(Sunshine)(Car)与 引擎(Engine)、轮胎(Wheel)、车灯(Light)表示聚合关系的线,有空心菱形的一端指向整体对象,另一端连接局部对象。原创 2023-10-04 13:47:21 · 230 阅读 · 0 评论 -
【3】c++设计模式——>UML表示类之间的关联关系
关联(Assocition)关系是类与类之间最常见的一种关系,它是一种结构化的关系,表示一个对象与另一个对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中,。在C++中这种关联关系在类中是这样体现的,。。下面逐一给大家进行介绍。原创 2023-10-04 13:11:30 · 247 阅读 · 0 评论 -
【2】c++设计模式——>UML表示类之间的继承关系
父类Bird中的fly()和eat()是虚函数,它有两个子类Cuckoo和Eagle,在这两个子类中重写了父类的虚函数,在使用带空心三角的实现表示继承关系的时候,有空心三角的一端指向父类,另一端连接子类。(Generalization),用于描述父子类之间的关系,父类又称为基类或者超类,子类又称作派生类。关于继承关系一共有两种:普通继承关系和抽象继承关系,但是不论哪一种表示继承关系的线的样式是不变的。原创 2023-10-04 12:57:20 · 636 阅读 · 0 评论 -
【1】c++设计模式——>UML类图的画法
UML:unified modeling language 统一建模语言面向对象设计主要就是使用UML类图,类图用于描述系统中所包含的类以及他们之间的相互关系,帮助人们简化对系统的理解,他是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。原创 2023-10-04 11:44:02 · 256 阅读 · 0 评论