
设计模式
文章平均质量分 58
Jxiepc
一个努力向上的男同志
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++【设计模式】 | 【09接口隔离】Proxy
【代码】C++【设计模式】 | 【09接口隔离】Proxy。原创 2022-10-26 17:19:30 · 425 阅读 · 0 评论 -
C++【设计模式】 | 【08对象性能】Flyweight
文章目录一、Flyweight1、优点2、适用场景3、模板示例 一、Flyweight 享元模式具有结构性目的,适用于对象并使用共享来有效地支持大量细粒度对象。当您需要创建大量相似对象时,该模式可用于减少内存使用; 1、优点 一定程度上,减少内存的使用; 运用共享技术有效地支持大量细粒度的对象; 2、适用场景 当一个类的一个实例可用于提供许多虚拟实例时; 当以下所有都为真时; 应用程序使用大量对象; 由于对象数量庞大,存储成本很高; 大多数对象状态都可以是外部的; 一旦外部状态被移除,许多对原创 2022-03-30 23:37:01 · 962 阅读 · 0 评论 -
C++【设计模式】 | 【08对象性能】Singleton
文章目录一、Singleton1、优点2、适用场景3、模板示例 一、Singleton 确保一个类只有一个实例,并提供一个全局访问点。模式具有创建目的并处理更具动态性的对象关系。Singleton通常用作另一种设计模式的一部分; 1、优点 能够保证正确的逻辑性,以及良好的效率; 2、适用场景 必须有单一类的实例,并且客户端必须可以从众所周知的访问点访问它; 当唯一的实例应该可以通过子类化来扩展,并且客户端应该能够在不修改其代码的情况下使用扩展的实例; 3、模板示例 线程非安全版本 clas原创 2022-03-29 22:55:16 · 185 阅读 · 0 评论 -
C++【设计模式】 | 【08 对象创建】Builder
文章目录一、Builder1、优点2、适用场景3、模板示例 一、Builder 构建器模式具有创建目的,将复杂对象的构造与其表示分离,以便相同的构造过程可以创建不同的表示。它是对象模式,即。关系可以在运行时更改并且更加动态。通常用于构建复合结构,但构建对象比使用工厂需要更多的客户领域知识; 1、优点 能够应对着复杂对象的各个部分创建工作,其通常由各个部分的子对象用一定的算法构成; 2、适用场景 创建对象的算法应该独立于部件以及它们的组装方式; 构造过程必须允许对所构造的对象进行不同的表示;原创 2022-03-28 23:03:20 · 1067 阅读 · 0 评论 -
C++【设计模式】 | 【07 对象创建】Prototype
文章目录一、Prototype1、优点2、使用场景3、模板示例 一、Prototype 解决在软件系统中,面临着某些结构复杂的对象的创建工作,为它们提供一致的接口; 1、优点 2、使用场景 在运行时指定要实例化的类时; 避免建立与产品类层次结构平行的工厂类层次结构; 当一个类的实例只能具有几种不同的状态组合之一时; 3、模板示例 Prototype.cpp //抽象类 class ISplitter{ public: virtual void split()=0; virtua原创 2022-03-28 22:46:26 · 912 阅读 · 0 评论 -
C++【设计模式】 | 【07 对象创建】Abstract Factory
文章目录一、Abstract Factory1、优点2、使用场景3、模板示例 一、Abstract Factory 解决在软件系统中,面临一系列互相依赖的现象的创建工作,同时存在更多系列对象的创建工作; 与工厂方法相反,该模式提供一个接口,让该接口负责创建一系列相关或者相互依赖的对象,无需指定它们具体的类; 1、优点 解决多系列对象的构造; 能够应对新系列的需求变动; 缺点:难以应对新对象的需求变动; 2、使用场景 系统应该独立于其产品的创建、组合和表示方式; 系统应配置有多个产品系列之原创 2022-03-26 16:32:09 · 1419 阅读 · 0 评论 -
C++【设计模式】 | 【06 对象创建】Factory Method
文章目录一、Factory Method1、优点2、使用场景3、模板示例 一、Factory Method 定义一个用于创建对象的接口,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。让子类决定要实例化哪个类。 工厂方法允许类将实例化推迟到子类。该模式具有创建目的,适用于通过继承处理关系的类,即。它们在编译时是静态固定的。与抽象工厂相比,工厂方法包含仅生产一种产品的方法; 1、优点 该模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类原创 2022-03-25 14:41:07 · 404 阅读 · 0 评论 -
C++【设计模式】 | 【05 单一职责】Bridge
文章目录一、Bridge1、优点2、使用场景3、模板示例 一、Bridge 使用对象间的组合关系解耦了抽象与其实现分离(子类化),以便两者可以独立变化,使得它们具有两个变化的维度,乃至多个纬度的变化;桥接模式具有结构目的,适用于对象,因此它处理对象的组合。 1、优点 2、使用场景 要避免抽象与实现之间的永久绑定; 抽象及其实现都应该通过子类化来扩展; 抽象实现的变化不应该对客户端产生影响; 要对客户完全隐藏抽象的实现; 3、模板示例 未优化 class Messager{ public:原创 2022-03-23 16:03:32 · 3747 阅读 · 0 评论 -
C++【设计模式】 | 【04单一职责】Decorator
文章目录一、Decorator1、优点2、使用场景3、模板示例 一、Decorator 在某些情况下我们可能会过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀,该如何避免呢? 为此设计了Decorator该模式,能够动态地将附加职责附加到对象。装饰器为扩展功能提供了一种灵活的替代子类的方法。该模式具有结构目的并适用于对象,解决主体类在多个方向上的扩展功能; 1、优点 减原创 2022-03-21 17:34:22 · 122 阅读 · 0 评论 -
C++【设计模式】 | 【03 组件协作模式】Observer
文章目录一、Observer1、优点2、适用场景3、模板示例4、实例 一、Observer 在软件构建过程中,我们需要为某些对象建立一种通知依赖关系 ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化; Observer 定义了对象之间的一对多依赖关系,这样当一个对象改变状态时,它的所有依赖项都会得到通知并自动更新。该模式具有行为目的并适用于对象; 1、优点 使用面向对象的抽象,Observer模式使得我们可以原创 2022-03-20 11:12:25 · 179 阅读 · 0 评论 -
C++【设计模式】 | 【03 组件协作模式】Strategy
文章目录一、Strategy1、优点2、适用场景3、模板示例 一、Strategy 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担; Strategy及其子类为组件提供了一系列可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换; 提供了用条件判断语句以外的另一种选择,消除条件判断语句,就是在解耦合。含有许多条件判断语句的代码通常都需要Strategy模式; 1、优点原创 2022-03-19 19:31:23 · 538 阅读 · 0 评论 -
C++【设计模式】 | 【02 组件协作模式】Template Method
文章目录一、重构模式1、重构技法二、组件协作1、Template Method1.1 适用场景1.2 常见开发流程1.3 Template Method流程1.3 程序示例 一、重构模式 “好的面向对象设计”指是那些可以满足应对变化,提高复用的设计 ; 现代软件设计的特征是需求的频繁变化。设计模式的要点是寻找变化点,然后在变化点处应用设计模式,从而来更好地应对 需求的变化”,“什么时候、什么地点应用设计模式”比“理解设计模式结构本身”更为重要; 设计模式的应用不宜先入为主,一上来就使用设计模式是对设计模原创 2022-03-18 15:14:45 · 378 阅读 · 0 评论 -
C++【设计模式】 | 【01】面向对象回顾
文章目录一、创业模式1.1 抽象工厂1.2 Builder,如何创建复合对象1.2 工厂方法,被实例化的对象的子类1.2 原型,被实例化的对象类1.2 单例,类的唯一实例 一、创业模式 1.1 抽象工厂 抽象工厂模式具有创建目的,并为创建相关或依赖对象系列提供了一个接口,而无需指定它们的具体类。模式适用于对象并处理对象关系,它们更具动态性。与工厂方法相反,抽象工厂模式产生一系列相关的类型,即。它产生不止一种类型的方法; 使用 - 系统应该独立于其产品的创建、组合和表示方式 - 系统应配置有多个产品系列之原创 2022-03-17 21:50:58 · 691 阅读 · 0 评论