SuperAPI AI 工具集

js-gof

编程与开发

查看项目

更新于 10-16 02:15

技能介绍

js-gof 是 metarhia/metaskills 提供的 JavaScript/TypeScript 设计模式技能,用于在实现创建型、结构型或行为型模式,或需要应用 Gang of Four(GoF)及相关设计模式时使用。

【设计原则】 该技能给出的核心主张包括:用结构化组合而非继承;采用多范式代码与契约式编程;使用领域特定语言(DSL),倾向声明式写法;分离且不混用系统代码与领域代码;使用 GRASP 和 SOLID 原则,尤其要降低耦合;注意引用透明性;优先平台无关代码;用 IoC 与 DI 实现隔离和层边界;对策略与多态/动态分发使用对象或 Map 查找;保持模式简单;不要为了模式名称而过度设计。

【创建型模式】 资料列出并举例说明:抽象工厂(创建属于同一族的相关对象而不指定其具体类,例如不同平台的 UI 组件);建造者(逐步组装复杂的可配置对象,常用链式调用,如查询构建器或表单生成器,也可用异步构造器或声明式结构);工厂(用字面量与方法组装、混入、setPrototypeOf 等不同技术创建对象的函数或方法);工厂方法(选择正确的抽象来创建实例,在 JavaScript 中可用 if、switch 或从集合/字典中选择);原型(通过克隆准备好的实例创建对象以节省资源,注意不要与原型编程混淆,后者更接近享元);享元(通过在多个实例间共享公共状态节省内存分配);单例(提供对单一实例的全局访问,常被视为反模式,最简单的方式是通过 ESM/CJS 模块缓存导出引用);对象池(复用预创建对象,在频繁创建和销毁时节省资源)。

【结构型模式】 资料还列出并举例:适配器(把不兼容的接口转换为兼容接口,使第三方组件无需改代码即可使用,甚至可把函数契约转为对象或反之);包装器(委托调用并添加行为的函数包装器,是适配器的特例);装箱(把原始值包装为对象类型以添加方法或统一接口,例如把 String 收窄为 AddressString,以及值对象示例);装饰器(不通过继承动态扩展行为,通常用组合与声明式语法,实质是添加元数据;资料同时提示在 JavaScript/TypeScript 中不宜使用经典装饰器,并给出用 Symbol 属性、包装器自有属性、JSDoc 注解、模块级 WeakMap 等方式添加元数据);代理(通过拦截调用、读写控制对对象的访问,适用于惰性初始化、缓存与安全,可用 GoF 代理或原生 JavaScript Proxy 实现;资料提示除非开发者直接要求,否则不要用内置 JS Proxy 类,因为会造成去优化,而应使用 GoF Proxy 作为带附加行为的容器);桥接(通过组合或聚合分离两个或多个抽象层次,使其能独立演化);组合(实现统一接口以一致处理单个对象及其树形结构,例如 DOM 或文件系统,资料给出用 reduce 递归组合与 JSON 嵌套组合的示例);外观(简化对复杂系统的访问,提供统一清晰的接口,隐藏并保护内部复杂性);上下文(在不同组件、抽象、模块、层之间交换状态与依赖,而它们并不共享同一环境,同时避免紧耦合)。

【使用方式与限制】 该技能作为设计模式参考用于 JavaScript 与 TypeScript 编码实践,资料以模式说明配合代码示例的形式呈现,并附有指向 HowProgrammingWorks 仓库的参考链接。关于具体安装命令、收费或价格、平台支持范围、运行效果等信息,资料中暂未提供。