logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++设计模式行为模式———状态模式

如果对象需要根据自身当前状态进行不同行为, 同时状态的数量非常多且与状态相关的代码会频繁变更的话, 可使用状态模式。如果某个类需要根据成员变量的当前值改变自身行为,从而需要使用大量的条件语句时,可使用该模式。状态模式很好的遵守了单一职责原则和开闭原则。将与特定状态相关的代码放在单独的类中,并且无需修改已有状态类和上下文就能引入新状态。通过消除臃肿的状态机条件语句简化上下文代码。

文章图片
#c++#设计模式#状态模式
C++设计模式行为模式———策略模式

策略模式中的若干个策略对象相互之间是完全独立的, 它们不知道其他对象的存在。当我们想使用对象中各种不同的算法变体,并希望能够在运行的时候切换这些算法时,可以选择使用策略模式来处理这个问题。以往利用增加新的f条件分支来支持新算法的方式违背了开闭原则,引人策略模式后,通过增加新的策略子类实现了对开闭原则的完全支持,也就是以扩展的方式支持未来的变化。

文章图片
#c++#设计模式#策略模式
C++设计模式行为模式———观察者模式

观察者设计模式也叫作发布-订阅()模式,如果用最通俗易懂的语言来描述,应该是这样:观察者(Fighter子类)提供一个特定的成员函数(),并把自已加人到通知器(Notifier子类)的一个对象列表中(订阅/注册),当通知器意识到有事件发生的时候,通过遍历对象列表找到每个观察者并调用观察者提供的特定成员函数(发布)来达到通知观察者某个事件到来的目的。观察者可以在特定的成员函数()中编写实现代码来实现

文章图片
#c++#设计模式#观察者模式
C++设计模式行为模式———中介者模式

中介者将对象之间复杂的沟通和控制方式集中起来处理,将以往对象之间复杂的多对多关系转化为简单的一对多关系。让系统有更好的灵活性和可扩展性。中介者模式将同事对象进行解耦,同事对象之间不再是一种紧耦合关系,它们仅知道中介者,从而减少相互连接的数目。每个同事类对象都可以独立地改变而不会影响到其他同事类对象,更符合开闭原则,进一步增加了对象的复用性。

文章图片
#c++#设计模式#迭代器模式
C++设计模式结构型模式———代理模式

代理模式的使用方式有很多,延迟初始化 (虚拟代理)。如果有一个偶尔使用的重量级服务对象, 一直保持该对象运行会消耗系统资源时, 可使用代理模式。无需在程序启动时就创建该对象, 可将对象的初始化延迟到真正有需要的时候。访问控制:如果你只希望特定客户端使用服务对象, 这里的对象可以是操作系统中非常重要的部分, 而客户端则是各种已启动的程序 (包括恶意程序), 此时可使用代理模式。代理可仅在客户端凭据满

文章图片
#c++#设计模式#代理模式
C++设计模式结构型模式———桥接模式

桥接(Bridge)模式也叫桥梁模式,简称桥模式,是一种结构型模式。该模式所解决的问题非常简单,即根据单一职责原则,在一个类中,不要做太多事,如果事情很多,尽量拆分到多个类中去,然后在一个类中包含指向另外一个类对象的指针,当需要执行另外一个类中的动作时,用指针直接去调用另外一个类的成员函数。

文章图片
#c++#设计模式#桥接模式
C++设计模式结构型模式———适配器模式

适配器模式在软件开发中使用得比较广泛,但并不是总是最佳选择。过多地使用适配器模式可能会导致混淆,因为从外部看调用的是 A 接口,但内部却适配成了 B 接口。这种情况在项目后期重构时通常更常见,因此在可能的情况下,重构代码可能比使用适配器更好。然而,在软件开发中,发布新版本时常常会面临与旧版本的兼容性问题。完全抛弃旧版本并不现实,因此适配器模式可以帮助实现新旧版本的兼容。尤其在遗留代码的复用和类库迁

文章图片
#c++#设计模式#适配器模式
C++设计模式创建型模式———简单工厂模式、工厂方法模式、抽象工厂模式

简单工厂、工厂方法和抽象工厂是三种常见的创建型设计模式,它们各自有不同的特点和应用场景。代码实现复杂度上,简单工厂模式最简单,工厂方法模式次之,抽象工厂模式最复杂。简单工厂模式中的代码修改得符合开闭原则,就变成了工厂方法模式,修改工厂方法模式的代码使一个工厂支持对多个具体产品的生产,就变成了抽象工厂模式。从需要的工厂数量上。

文章图片
#c++#设计模式#简单工厂模式
C++设计模式创建型模式———单例模式

懒汉式单例适用于需要延迟加载实例的场景,但在多线程环境下需要加锁。饿汉式单例简单且不需要考虑线程安全,但在不需要时也会占用内存。C++11静态局部变量单例实现方式最为简洁,并且在多线程环境下是安全的,是推荐使用的方法。懒汉模式的缺点是在创建实例对象的时候有安全问题,但这样可以减少内存的浪费(如果用不到就不去申请内存了)。饿汉模式则相反,在我们不需要这个实例对象的时候,它已经被创建出来,占用了一块内

文章图片
#c++#设计模式#单例模式
力扣刷题记录——滑动窗口

滑动窗口的核心思想是通过维护一个窗口(即数组或序列的连续子集)在数据结构上滑动,以动态调整子集的范围,从而解决各种问题,如寻找最大/最小子数组、满足某些条件的子数组、最长无重复字符子串等。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。我们可以发现,滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列

文章图片
#leetcode#算法#职场和发展
    共 21 条
  • 1
  • 2
  • 3
  • 请选择