
C++设计模式
文章平均质量分 82
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
C++设计模式之桥接模式
总之,桥接模式适用于需要将抽象部分和实现部分分离的场景,以实现灵活性、可扩展性和解耦的设计。它可以帮助处理多个维度上的变化,并在运行时动态地切换抽象和实现的关系。eg:手机品牌和软件是两个概念,不同的软件可以在不同的手机上,不同的手机可以有相同的软件,两者都具有很大的变动性。原创 2023-08-23 17:29:59 · 1195 阅读 · 0 评论 -
C++设计模式之适配器模式
类适配器模式使用继承来适配接口;对象适配器模式通过将适配者对象作为适配器类的成员变量来实现适配;无论是类适配器模式还是对象适配器模式,都可以实现接口适配的效果,选择哪种方式取决于具体的需求和设计考虑。原创 2023-08-23 17:04:02 · 1068 阅读 · 0 评论 -
C++设计模式之Prototype原型模式
使用_原型实例_指定创建对象的种类,然后通过_拷贝(深拷贝)_这些原型来创建新的对象。————《设计模式》GoFPrototype模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有“稳定的接口”。Prototype模式对于“如何创建易变类的实体对象”采用“原型克隆”的方法来做,它使得我们可以非常灵活地动态创建“拥有某些稳定接口”的新对象——所需工作仅仅是_注册一个新类的对象(即原型)_,然后在仍和需要的地方Clone。原创 2022-09-04 09:56:06 · 534 阅读 · 0 评论 -
C++设计模式之Abstract Factory抽象工厂
提供一个接口,让该接口负责创建一系列“相关或者相互依赖的对象”,无需指定它们具体的类。——《设计模式》GoF如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工厂完全可以。代码2是简单工厂,代码3是抽象工厂。区别在于:抽象工厂一次性创建三个对象“系列对象”指的是在某一特定系列下的对象之间有相互依赖、或作用的关系。不同系列的对象之间不能相互依赖。Abstract Factory模式主要在于应对“新系列”的需求变动。原创 2022-08-31 23:26:16 · 350 阅读 · 0 评论 -
C++设计模式之FactoryMethod工厂方法
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。——《设计模式》GoF所有的模式背后都有一个抽象基类,面向接口编程一个最显著的特点是:变量显式声明为抽象基类这也是依赖倒置原则(DIP)高层模块(稳定)不应依赖于低层模块(变化),二者都应该依赖于抽象(稳定)。抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)。这里的依赖指的是:编译时的依赖,你存在,我才可以编译通过。...原创 2022-08-30 23:29:25 · 310 阅读 · 0 评论 -
C++设计模式之Bridge桥模式
Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。所谓抽象和实现沿着各自纬度的变化,即“子类化”它们。Bridge模式有时候类似于多继承方案,但是多继承方案往往违背 单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比多继承方案更好的解决方法。Bridge模式的应用一般在“两个非常强的变化维度”,有时一个 类也有多于两个的变化维度,这时可以使用Bridge的扩展模式。C++设计模式入门,...原创 2022-08-30 23:22:06 · 606 阅读 · 0 评论 -
C++设计模式之Decorator装饰模式
动态(组合)地给一个对象增加一些额外地职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码&减少子类个数)。——《设计模式》GoF通过采用组合而非继承地手法,Decorator模式实现了在运行时动态扩展对象功能的能力,而且可以更具需要扩展多个功能。避免了使用继承带来的“灵活性差”和“多子类衍生问题”。Decorator类在接口上表现为is-a Component的继承关系,即Decorator类继承了Component类所具有的接口。...原创 2022-08-28 23:22:46 · 487 阅读 · 0 评论 -
C++设计模式之观察者模式
定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。--------《设计模式》GoF使用面向对象抽象,Observer模式使得我们可以独立地改变目标与观察者,从而使二者之间地依赖关系达致松耦合。目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数)会自动传播。观察者自己决定是否需要订阅通知,目标对象对此一无所知。Observer模式是基于事件地UI框架中非常常用地设计模式,也是MVC模式地一个重要组成部分。...原创 2022-08-28 21:56:45 · 709 阅读 · 0 评论 -
C++设计模式之Strategy策略模式
定义一系列算法,把他们一个个封装起来,并且是他们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。------ 《设计模式》 GoFStrategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时(虚函数)方便地根据需要在各个算法之间进行切换。Strategy模式提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式。...原创 2022-08-27 23:54:44 · 441 阅读 · 0 评论 -
C++设计模式之模板方法Template Method
定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。----《设计模式》GoF结构Structure对于每一个类图,着重关注这个类中哪些是稳定的,哪些是变化的(变化的函数需要由子类去override)eg:下面红色圈圈代表上面class Library中的run方法,蓝色圈圈代表class Library中的两个虚函数。...原创 2022-08-27 22:49:28 · 816 阅读 · 1 评论 -
C++设计模式
C++设计模式原创 2022-08-27 21:35:04 · 515 阅读 · 0 评论