原型模式
原型模式
原型模式Prototype Pattern用原型实例指向创建对象的类,使用于创建新的对象的类的共享原型的属性与方法
简言之就是通过克隆来创建一个一模一样的对象。
应用场景
创建成本比较大的场景
需要动态的获取当前的对象运行时状态的场景
js实现
对于ES5,提供Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__
对于ES6,提供O ...
建造者模式
建造者模式
建造者模式Builder Pattern又可以称为生成器模式
是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,建造者模式属于对象创建型模式。
实现
例如我们想要创建一个消息组件Message, 包括标题、正文、 提示 logo 以及颜色四部分
而消息组件包括弹出消息组件 AlertMessage 和提示消息组件 TooltipMessage 两种
在抽象工 ...
抽象工厂模式
抽象工厂模式
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口 而无须指定它们具体的类
实现123456789101112131415161718192021222324252627282930313233343536373839abstract class Database { constructor(public username: string = 'admin ...
工厂方法模式
工厂方法模式
定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
由于js没有abstract抽象类的概念
因此后续关于抽象类的直接使用ts 模拟,便于理解
12345678910// ts中class前面加abstract: 禁止被实例化。是用来被继承的// 父类指定结构 子类来实现 避免忘记重写方法导致使用默认的方法// 没有重写直接报错abst ...
简单工厂模式
简单工厂模式
定义一个创建对象的类,由这个类来封装实例化对象的行为
实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152class Database { getDetails(){ console.log(this ...
React常用自定义Hook
自定义HookuseDebounce
防抖
1234567891011121314import { useState, useEffect } from 'react'function useDebounce(value: any, delay = 300) { const [debouncedValue, setDebouncedValue] ...
TypeScript
1. 准备阶段安装TypeScript基本环境12345678910npm i typescript -g# 生成ts配置文件tsc --init# 手动解析ts文件tsc xxx.ts # 监视ts 实时转换js文件- 在vscode里面终端 输入 - ctrl+shift+b - 监视tsc- 或者在菜单-终端-运行任务-监视tsconfig.json
类型推断123如果定义的时候没有赋 ...