结构式:组合模式 1 基本介绍 组合模式为:组合多个对象形成树形结构以表示具有”整体——部分“关系的层次结构。 组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。 在组合模式中引入了抽象构件类Component,它是所有容器类和叶子类的公共父类,客户端针对Component进行编 2022-03-15 设计模式 #设计模式
结构式:适配器模式 1 基本介绍 适配器模式:将一个接口转换成客户希望的另一个接口,使接口不兼容的那个类可以一起工作,其别名为包装类。 根据适配器类与适配者类的关系不同,适配器模式可分为对象适配器和类适配器两种 在对象适配器模式中,适配器与适配者之间是关联关系; 在类适配器模式中,适配器与适配者之间是继承(或实现)关系 一般来说,对象适配器使用频率更高 2 设计分析 使用适配 2022-03-15 设计模式 #设计模式
创建式:建造者模式 1 基本介绍 建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。 定义如下:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式和抽象工厂模式的不同: 建造者模式返回一个完整的复杂产品,而抽象工厂模式返回一系列相关的产品 在抽象工厂模式中,客户端通过选择具体工厂来生成所需对象,而在建造者模式中,客户端通过 2022-03-14 设计模式 #设计模式
创建式:原型模式 1 基本介绍 原型模式大概是:创建一个原型对象,再通过复制这个原型对象来创建更多同类型的对象 工作原理很简单:将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝自己来实现创建过程。 通过克隆方法所创建的对象是全新的对象,它们在内存中拥有新的地址,通常对克隆所产生的对象进行修改对原型对象不会造成任何影响,每一个克隆对象都是相互独立的 2022-03-14 设计模式 #设计模式
创建式:单例模式 1 基本介绍 单例模式简单来说就是不用创建多个实例 单例模式有三个要点: 某个类只能有一个实例 它必须自行创建这个实例 必须自行向整个系统提供这个实例 这是最简单的设计模式,核心结构只有一个包含称为单例类的特殊类 下面就直接看看单例的几种实现方式把 2 设计分析2.1 饿汉式单例12345678910111213141516171819202122232 2022-03-14 设计模式 #设计模式
创建式:抽象工厂 1 基本介绍 前面介绍过,工厂方法每个工厂只能生产一个产品,会导致系统存在大量的工厂类,增加系统的开销。此时,可以将一些相关的产品组成一个“产品族”,由同一个工厂来生产。这就是抽象工厂的基本思想。 也就是说,一个工厂可以提供多个产品对象,而不是单一的产品对象,如一个电器工厂,可以生产电视机,冰箱,空调等。 引入两个概念 产品等级结构:产品等级结构即产品的继承结构,如一个抽象类是 2022-03-14 设计模式 #设计模式
设计模式的七大基本原则 1 基本介绍 设计原则名称 定义 使用频率 单一职责原则 一个类只负责一个功能领域中的相应职责 ✨✨✨✨ 开闭原则 软件实体应对外扩展开放,而对修改关闭 ✨✨✨✨✨ 里氏代换原则 所有引用基类对象的地方都能够透明地使用其子类的对象 ✨✨✨✨✨ 依赖倒转原则 抽象不应该依赖于细节,细节应该依赖于抽象 ✨✨✨✨✨ 接口隔离原则 使用多个专门的接口,而不使用单一的总接口 ✨✨ 2022-03-13 设计模式 #设计模式
创建式:工厂方法 1 基本介绍 简单工厂方法模式由于每次引入新产品时,都需要通过传入参数的不同来创建不同的产品,这必定要修改工厂类的代码,违反了“开闭原则” 从而出现了——工厂方法模式,就是解决该问题的 工厂方法中,不再提供统一的工厂类来创建所有的产品对象,而是针对不同的产品提供不同的工厂。 一般是定义一个用于创建对象的接口,让子类决定将哪一个类实例化。如下图 2 设计分析2 2022-03-13 设计模式 #设计模式
第284场周赛 6031. 找出数组中的所有 K 近邻下标 - 力扣(LeetCode) (leetcode-cn.com) 12345678910111213141516171819class Solution {public: vector<int> findKDistantIndices(vector<int>& nums, int key, int k) & 2022-03-13 算法 #周赛 #LeetCode