随笔分类 - 设计模式
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 数据结构 Composite 动机(Motivation) 软件在某些情况下,客户代码过多依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户代码的频繁
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 行为变化 Command 动机(Motivation) 在软件构建过程中,“行为请求者”与“行为实现者“通常呈现一种”紧耦合“。但某些场合——比如需要对行为进行”记录、撤销/重做(und
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 状态变化 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“模块变化”模式为这以问题提供了一种解决方案。 Memento 备忘录 存
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 接口隔离 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。 Façade 解
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 对象性能 面向对象很好地解决了“抽象”的问题,但是必不可免地付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理。 Singl
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 领域问题 Interpreter 动机(Motivation) 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的结构不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 对象创建 通过“对象创建” 模式==绕开new==,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。 Factory M
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 单一职责 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。 Decorator 动机(Moti
阅读全文
摘要:每一种都有对应理解的相关代码示例 → "Git原码" 一. GOF 23 模式分类 从目的来看 • 创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。 • 结构型(Structural)模式:通过类继承或者对象组合获得
阅读全文
摘要:其他设计模式 👉 "23种设计模式(C++)" 🔗 每一种都有对应理解的相关代码示例 → "Git原码" ⌨ 组件协作 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 Template Me
阅读全文
摘要:什么是设计模式 “每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 ——Christopher Alexander 如何解决复杂性? + 分解 + 人们面对复杂性有一个常见的做法:即分而治之,将大问题分解为多个小问题
阅读全文