Skip to content
Yunhan's Lab
Go back

设计模式对比(优缺点)

Updated:
Edit page

设计模式对比(优缺点)

设计模式适用场景定义/特点优点缺点
Simple factoryStatic工厂方法 + switch caseClient无需知道具体类名,只用传入参数Open-Close
Factory每个产品都有自己的专属工厂(子类),工厂之间是平行的Open-Close类数量爆炸
Abstract factory每个品牌(产品族)有自己的综合工厂,这个工厂能生产该品牌下的所有产品(如电视、空调、冰箱)Open-Close(增加产品族时)Open-Close(增加产品种类)
Builder多个对象步骤相同 结果不同流程固定,部件可变(对象有复杂结构)Open-Close,良好封装产品共性要求高
Prototype邮件复制 图形编辑器 游戏开发 配置系统对象自我复制,适用于创建过程复杂、需要频繁实例化良好扩展Open-Close(修改现有类要改源码)
Singlton只需要或只允许建立一个obj:任务管理器 数据库连接池 打印池确保一个类只有一个实例,并提供一个全局访问点节约资源Single Responsibility(职责过重)难以扩展(oc?)
Adapter电器协议不兼容解决不兼容问题提高Reuse,灵活和扩展性Class adapter不能适配final
Bridge分离抽象与实现Open-Close,减少子类数量理解实现难
Composite树形结构将对象组合成树形结构以表示”部分-整体”的层次结构Open-Close设计复杂
Decorate动态地给一个对象添加一些额外的职责Open-Close大量小对象,使用困难
FacadeUI界面分离Clientsubsystem,UILaw of Demeter(最少知识)如果设计不当,❌Open-Close
Chain of R责任审批Client不需要知道handlerOpen-Close调试困难、性能问题
Command餐厅点单系统,编辑器撤销功能支持事物操作(排队 日志 撤销)低耦合,容易加入Command可能过多ConcreteCommand类
Iterator需要遍历的场景访问对象中的各个元素,而又不暴露该对象的内部表示Open-Close复杂,可能过度设计
Strategy在几个算法之间选择在几个算法之间选择Open-Close, Reuse用户要了解所有Strategy

Edit page
Share this post on:

Previous Post
使用 GitHub Actions 自动部署 Astro 博客到宝塔面板
Next Post
PCS notes