主页

前端工程体系

我常常执着于部分(比如昏天暗地地解读一个源码),不能跳出来看看整体。这篇文章旨在于整理我所理解的前端工程体系,方便逐步演进顶层观念并指导后续发展。因为见识的有限和理解的不足,这篇文章本难免缺陷和差缪,还望有识予以理解。 我所理解的前端工程体系大致如上图。左半部分以 antd + umi、fusion + 飞冰为参照加以说明,组件库用于提供基础的通用组件。模板工程通常提供了应用层面的最佳实践,因此

设计模式综述

创建型模式 Abstract Factory 抽象工厂模式: Builder 生成器模式: Factory Method 工厂方法模式: Prototype 原型模式: Singleton 单例模式: 结构型模式 Adapter 适配器模式:通过适配器模式,将第三方接口或对象转变成本系统内的接口或对象编码模式,即兼容第三方接口。除了单向适配器外,还有双向适配器。 Bridge 桥接模式: Com

软件复用

软件复用分为实体复用和概念复用两类。实体复用有三个层次:应用系统复用、组件复用、对象和函数复用。概念复用指的是复用一个思想、一个方法、一个操作或一个算法,它可以嵌入在设计模式、可配置系统产品以及程序生成器等方法中。复用的好处在于降低开发成本、增加可靠性、降低过程风险、有效使用专家、标准一致等;坏处在于可复用的开发和维护成本高、推广可能遭遇不利。 软件复用的方法包含:体系结构模式、设计模式、应用框架

单例模式

概述单例模式指保证一个类只生成一个实例,且在全局提供一个访问点。单例模式适用场景有:系统中仅有一个打印机后台处理程序、一个文件系统、一个 window 窗口管理器;应用中仅有一个线程池、全局缓存;数字滤波器仅有一个 A/D 转换器;会计系统仅为一家公司服务等。 创建单例的方式在于,由类自身提供创建单例的方法,并阻止创建其他实例。通过全局变量创建单例无法阻止创建出多个实例,且会造成命名空间污染。如果

迭代器模式

概述Iterator 迭代器模式提供一种顺序访问聚合对象中各元素的方法,同时不需要暴露该对象的内部表示。它也被视为 Cursor 模式。迭代器模式为遍历聚合对象提供了方法。基于迭代器模式,你可以实现具体的遍历操作。通常,Iterator 类定义了访问聚合对象的接口;iterator 保存了当前访问元素的引用。迭代器模式的简单示例如下: 将遍历机制 ListIterator 与迭代对象 List

装饰者模式

概述Decorator 装饰者模式也称为 Wrapper 包装器模式,指通过外嵌对象为内部对象添加一些功能。《设计模式:可复用面向对象软件的基础》给出的案例是 ScrollDecorator 装饰器为 TextView 文本框追加滚动功能。装饰器相较使用子类追加功能更为灵活。 结构 Component:内嵌对象。 ConcreteComponent:具体内嵌对象。 Decorator:装饰器,维持

适配器模式

概述Adapter 适配器模式将原本不兼容的接口转换成兼容的接口。试想有一个富文本编辑器组件,在 ant design 表单管理时,就需要使用适配器模式对接 props.value、props.onChange 值。适配器模式通常用于在现行的应用环境中使用已有的开源类库。 结构 Client:调用 Target 接口进行一些处理。 Target:实际调用接口,适配器 Adapter 将适配 Tar

中介者模式

概述设想表单组件联动的场景,若将表单组件实现为对象,且联动逻辑直接由这些对象通过方法实现的话,那样就会使这些对象有复杂的实现与关联。如果在表单组件之外制作一个中介者,表单组件的变更流入中介者,再由中介者更迭另一个表单组件的状态,如状态管理器或 form store 那般。 中介模式使用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的

享元模式

概述考虑一个文档,它有大量字符构成。如果对所有字符构建一个对象,那就会造成创建的对象过于繁多,从而导致内存上的消耗。《设计模式:可复用面向软件的基础》使用文档的物理结构对其进行建模,首先一个页面由 Column 列对象构成,Column 由 Row 行对象构成,Row 由字符对象构成。字符对象使用享元模式,即从 Flyweight Pool 中获取享元对象,再由 Row 对象将字符的位置等相关信息