prototype pattern
prototype
#### 1. prototype和__proto__ ```js function Foo() { ... } Foo.prototype.constructor Foo; // true let foo = new Foo(); foo.constructor Foo; // true ``` ......
命令模式(Command Pattern)
## 一、模式动机 >命令模式(Command Pattern)是一种常用的行为型设计模式,它将请求发送者与请求接收者解耦,请求发送者通过命令对象来间接引用接收者,使得系统具有更好的灵活性,可以在不修改现有系统源代码的情况下将相同的发送者对应不同的接收者,也可以将多个命令对象组合成宏命令,还可以在命 ......
行为型模式(Behavioer Pattern)
# 行为型设计模式 行为型模式**定义了系统中对象之间的交互与通信**,研究系统在运行时对象之间的相互通信与协作,进一步明确对象的职责,包括对系统中较为复杂的流程的控制。 在软件系统运行时对象并不是孤立存在的,它们可以通过相互通信和协作完成某些功能,一个对象在运行时也将影响其他对象的运行。行为型模式 ......
代理模式(Proxy Pattern)
## 一、模式动机 - 通过引入一个新的对象(如小图片和远程代理对象)来实现对真实对象的操作,或者将新的对象作为真实对象的一个替身 - 引入代理对象来间接访问一个对象 ## 二、模式定义 - **给某一个对象提供一个代理,并由代理对象控制对原对象的引用** - 对象结构型模式 - 代理对象可以在客户 ......
外观模式(Facade Pattern)
## 一、模式动机 >外观模式(Facade Pattern)是一种使用频率非常高的设计模式,它通过**引入一个外观角色来简化客户端和子系统之间的操作**,**为复杂的子系统调用提供一个统一的入口**,使子系统与客户端的耦合度降低,且客户端调用非常方便。 外观模式中,外部与一个子系统的通信可以通过一 ......
装饰模式(Decorator Pattern)
## 一、模式动机 装饰模式(Decorator Pattern)是一种用于**替代继承的技术**,它通过一种**无须定义子类的方式来给对象动态增加职责**,**使用对象之间的关联关系取代类之间的继承关系**。在装饰模式中**引入了装饰类**,**在装饰类中既可以调用被装饰类的方法,还可以定义新的方 ......
原型模式(Prototype Pattern)
### 原型模式(Prototype Pattern) #### 一、意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 #### 二、优缺点 **优点:** 1、性能提高。 2、逃避构造函数的约束。 **缺点:** 1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是 ......
组合模式(Composite Pattern)
## 一、模式动机 >处理树型结构 >组合模式(Composite Pattern)关注那些存在**叶子构件和容器构件的结构以及它们的组织形式**,**叶子构件中不能包含成员对象**,而**容器构件中可以包含成员对象**,这些成员对象可能是叶子构件对象,也可能是容器构件对象。这些**对象可以构成一个 ......
桥接模式(Bridge Pattern)
# 模式动机 桥接模式(Bridge Pattern)是一种很实用的结构型模式,如果系统中某个类存在**两个独立变化的维度**,通过该模式可以**将这两个维度分离出来**,使得两者可以**独立扩展**。桥接模式用一种巧妙的方式处理**多层继承**存在的问题,**用抽象关联取代了传统的多重继承**,将 ......
cpp: Facade Pattern
/*****************************************************************//** * \file GoldGraphic.h * \brief Facade Pattern 外观模式 * 涂聚文 Geovin Du Visual Studi ......
cpp: Singleton Pattern
// GoldConfig.h: 此文件包含 "GoldConfig" 类。装饰器模式 Singleton Pattern C++ 14 // //Singleton Pattern 单例模式 单件模式、Singleton // 2023年5月20日 涂聚文 Geovin Du Visual Stu ......
Navicat Premium 15 注册出现 No All Pattern Found! File Already Patched?
https://blog.csdn.net/ZChen1996/article/details/105706866/ 重新安装 avicat Premium 15(注意安装完成后不要打开,不要运行!!!!!!!!!!!!!!!!!!),重新path即可。 ......
建造者模式(Builder Pattern)
模式动机 建造者模式(Builder Pattern)是最复杂的创建型模式,它用于创建一个包含多个组成部分的复杂对象,可以返回一个完整的产品对象给用户。它通过将客户端与包含多个组成部分的复杂对象的创建过程分离,使得客户端无需知道复杂对象的内部组成部分与装配方式,只需要知道建造者的类型即可。它关注如何 ......
单例模式(Singleton Pattern)
单例模式 模式动机 单例模式(Singleton Pattern)是结构最简单的设计模式,它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以确保系统中一个类只有一个实例,且该实例易于被外界访问,从而方便对实例个数的控制并节约系统资源。 [ ] 如何确保一个类只有一个实例并且这个实例易于被 ......
[Typescript] Builder pattern 07- Reducer
import {Expect, Equal} from "../types/utils" import { expect, it } from 'vitest'; type PayloadsToDiscriminatedUnion<T extends Record<string, any>> = { ......
cpp: Strategy Pattern II
// Gold.h : 此文件包含 "Gold" 类。策略模式 Strategy Pattern C++ 14 // 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. #pragma once //#ifndef GOLD_H //#define GO ......
[Design Pattern] Adapter Design Pattern - code example
interface EnemyAttacker { fireWeapon(): void; driveForward(): void; assignDriver(driverName: string): void; } // Target class EnemyTank implements Ene ......
cpp: Strategy Pattern
// Gold.h : 此文件包含 "Gold" 类。策略模式 Strategy Pattern C++ 14 // 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. #pragma once //#ifndef GOLD_H //#define GO ......
抽象工厂模式(Abstract Factory Pattern)
回顾工厂方法设计模式的不足:具体产品增加时,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度 模式动机 产品等级结构:产品等级结构即产品的继承结构,即抽象产品与具体产品 产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品 模式定义 提供一个创建一系列相关 ......
cpp: Builder Pattern
// Gold.h : 此文件包含 "Gold" 类。原型模式 Builder Pattern C++ 14 // Jewelry Builder Pattern 生成器模式 建造者模式、Builder // 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 ed ......
cpp: Prototype Pattern
// Gold.h : 此文件包含 "Gold" 类。原型模式 Prototype Pattern C++ 14 // 2023年5月1日 涂聚文 Geovin Du Visual Studio 2022 edit. #pragma once #ifndef GOLD_H #define GOLD_ ......
[Javascript] Avoid mutation, Array.prototype.toReversed() vs reverse()
reverse()mutates the original array, return the reference point to the original array. The toReversed() method of Array instances is the copying count ......
[Javascript] avoid mutation: Array.prototype.toSpliced() vs splice()
Array.prototype.splice()mutates the original array. To avoid mutation, we use Array.prototype.slice(). new method Array.prototype.toSpliced() return a ......
[Javascript] Avoid mutation, Array.prototype.toSorted() vs sort()
sort(), mutates the original array, and return the reference to original array and sorted. The toSorted() method of Array instances is the copying ver ......
[Javascript] Array.prototype.with
Prevously, when we want to upate an item inside a array: const items = [ {id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 3, name: 'c'}, {id: 4, name: 'd' ......
cpp: Abstract Factory Pattern
// Gold.h : 此文件包含 "Gold" 类。Abstract Factory Pattern C++ 14 // 2023年4月30日 涂聚文 Geovin Du Visual Studio 2022 edit. #pragma once #ifndef GOLD_H #define GO ......
cpp: Simple Factory Pattern
// Monster.h : 此文件包含 "Monster" 类。Abstract Factory Pattern C++ 14 // 2023年4月29日 涂聚文 Geovin Du Visual Studio 2022 edit. #pragma once #ifndef MONSTER_H # ......
cpp: Template Mothod Pattern
文章来源《C++新经典设计模式》 王健伟编著 清华大学出版社 // TemplateMethonPattern.h : 此文件包含 "TemplateMethonPattern" 类。Template Mothod Pattern C++ 14 // 2023年4月29日 涂聚文 Geovin Du ......
《Dashboard Design Patterns》
今日组会分享了一篇有关可视化界面设计的论文,收获颇多,在此记录一下。 论文期刊:IEEE TRANSACTIONS ON VISUALIZATION AND COMPUTER GRAPHICS, VOL. 29, NO. 1, JANUARy 2023 What is Dashboard (可视化界 ......
【AtCoder】Forbidden Pattern
题目链接 分析 首先考虑哪些串能被删空。下面只考虑长度为偶数的串。考虑这样一个(错误的)算法:从左往右依次加入串中的字符,然后能删则删。这个算法对于结尾为 A 的串一定能删空。对称地,开头为 B 的串也一定能被删空。 现在只需要考虑开头为 A 结尾为 B 的串。如果它能被删空,则一定存在最早的一个时 ......