题目:什么是设计模式?有什么好处?
难度:low
标签:arch/design-pattern, architecture/design, difficulty/low
评分:⭐⭐⭐☆☆(3/5)
所谓设计模式,设计模式就是把一些经常使用的经常使用的逻辑整合成一种模式,然后重复的使用,方便传递,方便重复使用。它其实是一套思维逻辑,并不仅仅是一个工具,它们传递的是一种种思想。常见的设计模式主要分几类,创建型的、逻辑型的、管理对象型的。比如创建型的有创建建造者、工厂、模板方法、工厂方法等。逻辑型的像责任链、策略、代理,这都是相当于行为或者逻辑型的。好像单例就是创建对象型的。
优点:抓住了设计模式的本质——"思维逻辑"、"传递思想",这个洞察到位;列举的具体模式大多正确。
不足:分类体系错位(GoF 三大类是创建型/结构型/行为型,不是"逻辑型/管理对象型");模板方法归错类(应为行为型);代理归错类(应为结构型);遗漏原型、抽象工厂、适配器、装饰器等常见模式。
补充:完整分类——创建型 5(单例/工厂方法/抽象工厂/建造者/原型)、结构型 7(适配器/桥接/组合/装饰器/外观/享元/代理)、行为型 11(责任链/命令/迭代器/中介者/备忘录/观察者/状态/策略/模板方法/访问者/职责链)。设计模式四大价值:代码复用、开闭原则、高内聚低耦合、扩展性。
核心考点定位:考察对设计模式本质认知(不是记住名字)+ GoF 标准分类体系掌握。
知识点拆解:
按「本质认知 → 分类体系 → 工程价值」递进。
考察方向:
延伸递进面试题:
面试官您好,设计模式本质上是一套被反复验证过的软件设计思维模板,它解决的是反复出现的设计问题,让我在遇到类似场景时不用从零开始思考。它传递的不只是代码结构,更是一种"如何应对变化"的设计哲学——用变化的对象封装变化的原因。
我理解的经典分类是 GoF 提出的 23 种,分三大类:创建型(单例、工厂方法、抽象工厂、建造者、原型)解决对象怎么造;结构型(适配器、桥接、组合、装饰器、外观、享元、代理)解决对象怎么组装;行为型(责任链、命令、观察者、状态、策略、模板方法等)解决对象怎么协作。
设计模式的价值我总结为四点:一是代码复用,比如模板方法把公共流程固定下来;二是开闭原则,策略和工厂让新增类型不改老代码;三是高内聚低耦合,外观模式和中介者模式把复杂子系统包起来;四是扩展性,观察者和责任链支持运行时动态增删处理节点。
在我的项目里,支付通道用策略模式扩展不同支付方式、审批流用责任链模式串起多级审核、事件通知用观察者解耦业务和消息推送,都是设计模式落地的典型场景。设计模式不是炫技,而是在合适场景下用最少的复杂度换最多的灵活性。