学习笔记

共 301 篇笔记,按目录组织,左侧树可展开浏览。

  • 301篇
  • 5分类
  • 0标签

笔记流 301

Design Pattern

自动关联目录:Design Pattern 设计模式是对"反复出现的设计问题"的命名。价值不在套用,而在沟通:一句"这里用个观察者"能省掉一段解释。 判断要不要用模式的唯一标准是:变化点在哪,模式能不…

Programing
Lua 概览

自动关联目录:Lua 概览 一门语言值不值得投入,看的是它把复杂度放在哪里。Lua 的选择是:把复杂度交给使用者,换一个极小、极快、极易嵌入的内核。 设计取舍 取舍 换来什么 代价 只有 table 一种数据结构 内核极小,语…

Programing
2 Bridge

自动关联目录:2 Bridge 桥接把"抽象"和"实现"拆成两个独立演化的维度,用组合代替继承把它们连起来。目的是应对多个维度同时变化时继承带来的类爆炸。 原笔记的概括很准:主体类里那部分"…

Programing
2 Structural

自动关联目录:2 Structural 结构型模式解决的是:怎么把类或对象组合成更大的结构,同时保持灵活。它们对付的是接口不匹配、层次过深、数量过多这三类结构性问题。 分成两条线索: 线索 模式 手段 让不兼容的接口能协作 A…

Programing
3 Composite

自动关联目录:3 Composite 组合模式把对象组织成树形结构,让客户端对"单个对象"和"组合对象"用同一套接口处理。 它解决的痛点是原笔记里那句:客户端代码过多依赖对象容器的内部结构,于是容器一…

Programing
4 Decorator

自动关联目录:4 Decorator 装饰模式用组合(运行期、动态)给对象叠加职责,而不是用继承(编译期、静态)。 它的直接动机是子类爆炸:当主体类有多个能力方向,而这些方向之间又相互依赖(可以任意组合)时,继承只能用乘法去穷举组合,装饰器…

Programing
5 Facade

自动关联目录:5 Facade 门面为子系统的一组接口提供一个一致(稳定)的高层入口,让外部更容易使用,同时把外部与子系统内部解耦。 原笔记的定性很重要:它解决的是架构层面的设计,而不只是一个类的设计——门面是系统边界,不是工具函数集合。 …

Programing
6 Flyweight

自动关联目录:6 Flyweight 享元用共享技术支撑大量细粒度对象,把运行时代价(主要是内存,其次是分配与缓存命中)压下来。 它成立的前提是:这些对象大部分内容是可以共享的,真正每个实例独有的只有很少一部分。 内部状态 vs 外部状态 …

Programing
7 Proxy

自动关联目录:7 Proxy 代理为另一个对象提供替身,以控制对它的访问。动机是原笔记里那三条:创建开销大、需要控制/权限、对象在进程外。 代理设计上非常自由,核心只有一个:加一层中间层,达到访问隔离。 结构 角色 职责 Su…

Programing
8 Summary

自动关联目录:8 Summary 结构型模式介绍如何将对象和类组装成较大的结构,并同时保持结构的灵活和高效。 它们对付的是三类结构性问题:接口对不上、层次太深、数量太多。 七个模式的分工 模式 手段 解决的问题 Adapter…

Programing
1 Chain of Responsibility

自动关联目录:1 Chain of Responsibility 责任链让请求沿一条处理者链传递,直到有人处理它。请求发送者不需要知道最终谁处理——这是它和 if-else 分派的本质区别。 原笔记的动机描述很准确:一个请求可能被多个对象处…

Programing
10 Visitor

自动关联目录:10 Visitor 访问者让你在不改变类层次结构的前提下,为各个类增加新的操作。 它是"对扩展开放"最激进的实现:加一个操作只需加一个 Visitor 类,所有节点类都不用动。 结构 角色 职责 …

Programing
11 Interpreter

自动关联目录:11 Interpreter 解释器为某个特定领域定义一套语法表示,并实现一个解释器来解释这种语法的句子。 这是 GoF 里最不常用的一个模式:语法一旦复杂,它就会被真正的编译原理方案取代。原笔记那句"详见 Lua …

Programing
12 Summary

自动关联目录:12 Summary 行为型模式负责对象间的高效沟通和职责委派。 它们大多在做同一件事:把"谁通知谁""谁调用谁"从硬编码里解耦出来。 十一个模式的分工 模式 解耦的是什么 …

Programing
2 Command

自动关联目录:2 Command 命令模式把"请求"封装成对象,于是请求可以像数据一样被存储、排队、传递、记录、撤销。 原笔记点出了直接动机:行为请求者与行为实现者通常是紧耦合的,把它抽象成对象即可解耦。 结构 角…

Programing
3 Behavioral

自动关联目录:3 Behavioral 行为型模式关注的是对象之间怎么协作、职责怎么分配。它们大多在做同一件事:把"谁通知谁""谁调用谁"从硬编码解耦出来。 可以再分三组来看: 线索 模式 …

Programing
3 Iterator

自动关联目录:3 Iterator 迭代器提供一种顺序访问聚合对象元素的方法,而不暴露其内部表示。 这条笔记的定位要说清楚:作为手写设计模式它已经过时(STL 迭代器早已内建),但作为思想(透明遍历、稳定接口隔离变化)它无处不在。 结构 …

Programing
4 Mediator

自动关联目录:4 Mediator 中介者用一个中介对象封装一组对象的交互,让这些对象不必显式互相引用,从而把网状依赖中心化。 原笔记的概括很到位:引入中介者,把网状的引用中心化,把编译期的显式引用变成运行期的间接协作。 问题:网状依赖 不…

Programing
5 Memento

自动关联目录:5 Memento 备忘录在不破坏封装的前提下捕获对象的内部状态,在对象之外保存它,并支持之后恢复。 难点从来不是"存下来",而是存下来但不把内部字段暴露出去。 结构 角色 职责 Origin…

Programing
6 Observer

自动关联目录:6 Observer 观察者定义对象间的一对多依赖:被观察者状态变化时,自动通知所有依赖它的对象。 它是解耦"谁变了"与"谁关心"最基础的手段,也是事件系统的理论原型。 结构 角色…

Programing