# design-patterns **Repository Path**: myweal_book-study/design-patterns ## Basic Information - **Project Name**: design-patterns - **Description**: TypeScript 设计模式学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-15 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设计模式学习项目 基于《JavaScript设计模式与开发实践》的设计模式学习项目,采用 TypeScript 实现。 ## 项目结构 ```bash design-patterns/ ├── src/ │ └── ts/ # TypeScript 实现 │ ├── creational/ # 创建型模式 │ ├── structural/ # 结构型模式 │ ├── behavioral/ # 行为型模式 │ └── index.ts # 入口文件 ├── package.json ├── tsconfig.json ├── vitest.config.ts └── README.md ``` ## 设计模式列表 ### 创建型模式 (Creational Patterns) | 序号 | 模式名称 | TypeScript | | :--- | :--- | :--- | | 1 | 单例模式 (Singleton) | ✅ | | 2 | 工厂模式 (Factory) | ✅ | | 3 | 抽象工厂模式 (Abstract Factory) | ✅ | | 4 | 建造者模式 (Builder) | ✅ | | 5 | 原型模式 (Prototype) | ✅ | ### 结构型模式 (Structural Patterns) | 序号 | 模式名称 | TypeScript | | :--- | :--- | :--- | | 6 | 适配器模式 (Adapter) | ✅ | | 7 | 桥接模式 (Bridge) | ✅ | | 8 | 装饰器模式 (Decorator) | ✅ | | 9 | 代理模式 (Proxy) | ✅ | | 10 | 外观模式 (Facade) | ✅ | ### 行为型模式 (Behavioral Patterns) | 序号 | 模式名称 | TypeScript | | :--- | :--- | :--- | | 11 | 观察者模式 (Observer) | ✅ | | 12 | 策略模式 (Strategy) | ✅ | | 13 | 命令模式 (Command) | ✅ | | 14 | 状态模式 (State) | ✅ | | 15 | 模板方法模式 (Template Method) | ✅ | ## 快速开始 ### 安装依赖 ```bash npm install ``` ### 运行项目 ```bash npm start ``` ### 运行测试 ```bash npm test # 运行所有测试(监听模式) npm run test:run # 运行一次测试 npm run test:coverage # 运行测试并生成覆盖率报告 ``` ### 运行特定测试文件 ```bash # 使用文件路径(推荐) npm run test:run -- src/ts/behavioral/State.test.ts # 使用测试名称匹配 npm run test:run -- --testNamePattern="订单状态" # 使用 Vitest 直接运行 npx vitest run src/ts/behavioral/State.test.ts ``` ### 代码检查与修复 | 命令 | 说明 | |------|------| | `npm run lint` | 检查代码语法和风格问题 | | `npm run lint:fix` | 自动修复可修复的代码问题 | | `npm run lint:ts` | TypeScript 类型检查 | ### 构建项目 ```bash npm run build npm run clean # 清理构建产物 ``` ## 开发规范 ### 代码修改流程 修改 TypeScript 文件后,必须同步更新对应的单元测试,并执行测试确保代码质量。 ### 单元测试规范 - 测试用例描述使用中文 - 测试文件命名格式:`{文件名}.test.ts` ### 代码注释规范 - TypeScript 代码文件必须使用 JSDOC 中文注释 - 注释应包含:`@description`、`@param`、`@returns`、`@example` 等 ## 开发工作流 ```bash 修改代码 → 检查语法 → 运行测试 → 构建验证 → 提交代码 ↓ ↓ ↓ ↓ *.ts npm run lint npm run npm run npm run lint:ts test:run build ``` **示例:修改 State.ts 后的完整流程** ```bash # 1. 修改代码后,先检查语法 npm run lint # 2. 检查类型错误 npm run lint:ts # 3. 运行相关测试 npm run test:run -- src/ts/behavioral/State.test.ts # 4. 确保构建通过 npm run build # 5. 提交代码 ``` ## 常见问题 ### Q: IDE 显示类型错误,但命令行检查通过? **A:** 这是 IDE 缓存问题,尝试: - 重启 VS Code - 运行 `TypeScript: Restart TS Server` - 使用 `Developer: Reload Window` ### Q: ESLint 报告未使用变量错误? **A:** 将未使用的变量名改为以 `_` 开头,如 `_unusedVar` ### Q: 如何跳过特定的 ESLint 检查? **A:** 在代码行上方添加注释: ```typescript // eslint-disable-next-line no-console console.log('调试信息'); ``` ## 技术栈 - **TypeScript**: 类型安全的 JavaScript 超集 - **tsx**: TypeScript 执行器 - **vitest**: 单元测试框架 - **esbuild**: 快速构建工具 ## 设计模式说明 ### 创建型模式 - **单例模式**: 保证一个类仅有一个实例,并提供一个访问它的全局访问点 - **工厂模式**: 定义一个创建对象的接口,让子类决定实例化哪个类 - **抽象工厂模式**: 提供一个创建一系列相关或相互依赖对象的接口 - **建造者模式**: 将复杂对象的构建过程与其表示分离 - **原型模式**: 用原型实例指定创建对象的种类,通过拷贝这些原型创建新的对象 ### 结构型模式 - **适配器模式**: 将一个类的接口转换成客户希望的另一个接口 - **桥接模式**: 将抽象部分与实现部分分离,使它们可以独立地变化 - **装饰器模式**: 动态地给一个对象添加一些额外的职责 - **代理模式**: 为其他对象提供一种代理以控制对这个对象的访问 - **外观模式**: 为子系统中的一组接口提供一个一致的界面 ### 行为型模式 - **观察者模式**: 定义对象间的一对多依赖,当一个对象状态改变时,所有依赖者都会收到通知 - **策略模式**: 定义一系列算法,把它们封装起来,并使它们可以相互替换 - **命令模式**: 将请求封装成对象,从而使你可以用不同的请求对客户进行参数化 - **状态模式**: 允许对象在内部状态改变时改变它的行为 - **模板方法模式**: 定义一个算法骨架,而将一些步骤延迟到子类中 ## 学习资源 - 《JavaScript设计模式与开发实践》 - 曾探 - Head First Design Patterns - Design Patterns: Elements of Reusable Object-Oriented Software ## 许可证 MIT License