设计模式中Intent与Problem两个核心概念的区别是什么?
设计模式核心特征说明及Intent与Problem的区别
内容整理自《Design Patterns Explained: A New Perspective on Object-Oriented Design》一书,书中提及设计模式包含以下核心特征:
- 名称(Name):模式的名称,用于设计沟通中的快速指代
- 意图(Intent):模式的用途,描述模式设计的核心目标
- 问题(Problem):模式尝试解决的具体场景矛盾与痛点
- 解决方案(Solution):模式在对应场景下为问题提供的通用可复用解决思路
Intent与Problem的核心区别
二者是定义设计模式适用边界的两个互补要素,定位完全不同:
- *问题(Problem)*是触发使用模式的前提:它明确了「你遇到什么样的场景约束、具体痛点时,才需要考虑该模式」,包含了所有适配该模式的前置条件,不符合Problem描述的场景即便强行套用模式也无法发挥作用。
- *意图(Intent)*是使用模式后要达成的结果:它明确了「使用该模式最终要实现什么设计效果」,是模式被抽象总结出来的核心初衷。
举个简单的例子可以快速区分:
工厂方法模式的Problem是「需要创建对象,但具体创建的对象类型需要在运行时才能确定,且不希望调用方和具体对象的创建逻辑耦合」,而它的Intent是「定义一个创建对象的接口,让子类决定实例化哪一个类,将类的实例化逻辑和调用方解耦」。
简单说就是:你先碰到了符合Problem描述的问题,才会用对应模式去实现Intent描述的目标,二者是前后承接的关系,不能互相替代。
内容的提问来源于stack exchange,提问作者mbit
相关产品推荐
相关产品推荐

