组合模式
组合模式
将对象组合成树形结构以表示“部分-整体”的层次结构。组合使得用户对单个对象和组合对象的使用具有一致性。
常见场景: 文件目录
代码实现
组合对象和叶子对象并不是父子关系,而是组合关系
实现时,我们会将组合对象类 Composite 或者叶子对象类 Leaf 继承于同一个抽象类 Component
12345678910111213abstract class Component ...
桥接模式
桥接模式
桥接模式也叫桥梁模式,将实现与抽象放在两个不同的层次中,使得两者可以独立地变化。(最主要的将实现和抽象两个层次划分开来)
常见场景:JDBC驱动程序、银行转账系统(转账分类和转账用户类型)、消息管理(消息类型、消息分类)
代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344 ...
装饰器模式
装饰器模式
在现有类或对象的基础上,添加了一些功能,使类和对象具有新的表现代码实现
1234567891011function Path(name: string) { console.log('需要通过柯里化形式拿到参数,默认传入的是target') return function (traget: any) { console.dir(nam ...
代理模式
代理模式
代理模式是为一个对象提供一个代用品,或占位符,以便控制对它的访问。
对接口进行一定程度的隐藏,用于封装复杂类
缓存代理比较常见。如果传递进来的参数跟以前一致,则可以直接返回前面存储的运算结果。
代码实现1234567891011121314151617181920212223class Car { a: number = 1 b: number = 2 c: ...
适配器模式
适配器模式
适配器模式(变压器模式、包装模式)是将一个类的接口变换为客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
适配器模式主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。这三种明明方式是根据被适配者(src)是以怎样的形式给到Adapter来命名的。
类适配器:以类给到,在Adapter里,就是将src当做类,继承。(通过继承来实现适配器功 ...
外观模式
外观模式
外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节
使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节
代码实现123456789101112131415class Family{ static main():void{ const father = new Father() const child = new Father() ...
单例模式
单例模式
单例模式就是保证一个类仅有一个实例,并提供一个访问它的全局访问点(静态方法)。
代码实现饿汉式12345678910class Singleton1 { // 1. 构造器私有化,外部不能new private constructor(){} // 2. 本类内部创建对象实例化 private static instance : S ...