一句话:设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。
和算法有什么区别
其实两者都是问题的通用解决方案,区别在于:
算法更像是菜谱
: 提供达成目标的明确步骤。 而模式更像是蓝图
: 你可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。
了解其分类只要帮助我们整体理解和记忆设计模式,23种,数量可不少,光记名字就不简单。
根据目的来分
-
创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。
-
结构型模式:用于描述如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
-
行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。
根据作用范围来分
-
类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来。
-
对象模式:用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。
一张表搞定
| 范围/目的 | 创建型模式 | 结构型模式 | 行为型模式 |
| — | — | — | — |
| 类模式 | 工厂方法 | (类)适配器 | 模板方法、解释器 |
| 对象模式 | 单例 原型 抽象工厂 建造者 | 代理 (对象)适配器 桥接 装饰 外观 享元 组合 | 策略 命令 责任链 状态 观察者 中介者 迭代器 访问者 备忘录 |
或许你已从事程序开发工作多年, 却完全不知道单例模式是什么。 很多人都是这样。 即便如此, 你可能