标准回答
三大分类
- 创建型:关注「怎么创建对象」。单例保证全局唯一实例;工厂把创建逻辑集中、按需返回子类;建造者分步装配复杂对象。
- 结构型:关注「类/对象如何组合」。适配器转换不兼容接口;装饰器在不改原类下动态加功能;代理为对象提供访问控制或延迟加载。
- 行为型:关注「对象间如何协作」。策略封装可替换算法;观察者实现一对多事件通知(发布订阅);状态把状态相关行为分散到状态类。
作用
设计模式是被验证过的解决方案模板,能提升复用性、降低耦合、增强可读性。关键是先识别真实问题再选模式,而非先有模式再套场景。
常见误区
⚠️ 常见踩坑
过度设计:简单问题硬套复杂模式,反而增加理解成本;以及把模式当目标而非解决耦合/复用问题的手段。
追问
追问 1:策略模式和状态模式有什么区别?
结构相似但意图不同。策略让调用方主动选择互不感知的算法;状态则随对象内部状态自动切换行为,状态之间常彼此知晓并触发转移。
追问 2:单例模式有哪些缺点?
引入全局状态、隐藏依赖、不利于单元测试(难替换 mock),多线程下需注意并发初始化。很多场景可用依赖注入提供单一实例替代。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。