程序编写技巧:多if-else分支的优化

程序编写技巧:多if-else分支的优化 前言 我记得我在前一篇的Python博客中提到了对多重复杂的if/else分支上的优化,觉得这个内容非常的有意思。这里针对C++的部分,重新整理一下遇到的技巧。 我们很容易会问出来,为什么要优化过度的if/else分支?答案很简单,if/else分支拖的足够


精读C++20设计模式——行为型设计模式:策略模式

精读C++20设计模式——行为型设计模式:策略模式 前言 我们天天都在用策略模式!标准库的算法在设计上就是一种策略模式! 策略模式的核心想法很简单:把算法/行为从使用它的类中抽离出来,封装成可互换的“策略(Strategy)”,并允许在运行时或编译期替换这些策略,从而实现算法的可扩展、可测试与解耦。


精读 C++20 设计模式:行为型设计模式 — 访问者模式

精读 C++20 设计模式:行为型设计模式 — 访问者模式 访问者模式是另一个经典的设计模式——它把“算法”与“数据结构”分离:把作用于一组对象的操作从对象中抽离出来,以便在不修改这些对象类的情况下添加新的操作。 这里会涉及到分发这个事情:分发其实就是一组判断逻辑执行后执行不用的结果函数(运行时决定


精读 C++20 设计模式:行为型设计模式 — 状态机模式

精读 C++20 设计模式:行为型设计模式 — 状态机模式 前言 状态机(State Machine)是工程里极常见也极重要的工具:当一个对象的行为不仅仅由当前输入决定,而是和“当前状态”强耦合时,状态机让我们把“状态 + 转换规则 + 动作”结构化、可测试、可扩展。状态机有很多实现风格:面向对象的


精读 C++20 设计模式:行为型设计模式——观察者模式

精读 C++20 设计模式:行为型设计模式——观察者模式 前言 观察者!这个是一个很有名的设计模式——简而言之,我们这个模式在关心对象的变化。当对象变化的时候,我们要触发点事情,这个怎么做呢?我们要放一个观察者,看着它:嘿对象变了处理点事情!这就是这个设计模式在做的事情。 Observer<T> 现


精读 C++20 设计模式:行为型设计模式 — 备忘录模式

精读 C++20 设计模式:行为型设计模式 — 备忘录模式 前言 我们现在往往会使用撤销 / 回退功能。这就意味着,咱们需要准备备忘所有的操作和他们的正反双方操作。这个在咱们的命令模式中的redo/undo模式看到了。当我们实现“撤销 / 回退”功能、快照保存、或者需要在不暴露内部实现的情况下记录对


精读C++20设计模式:行为型设计模式:中介者模式

精读C++20设计模式:行为型设计模式:中介者模式 前言 中介者模式试图做的事情很简单。他跟其他行为型设计模式类似,都希望交互对象的耦合是松散的而不是紧密的。对于特别复杂的系统里,对象之间的交互会像蛛网一样纠结:A 直接调用 B,B 又调用 C,C 反过来修改 A 的状态——改动一处,波及多处。 中


精读C++20设计模式——行为型设计模式:迭代器模式

精读C++20设计模式——行为型设计模式:迭代器模式 前言 标准库就是再好不过的例子了,到处都是迭代器(憋笑),很显然,在组合模式的时候,我们经常有这样的需求:需要遍历一个集合(数组、链表、树、图、数据库结果集等),但又不希望暴露集合的内部表示或把遍历逻辑散落在调用方代码中。把遍历逻辑和集合实现耦合


精读C++20设计模式——行为型设计模式:解释器模式

精读C++20设计模式——行为型设计模式:解释器模式 前言 笔者的这个更多是整理出来的内容,我没用过解释器模式,或者说,即使我真设计过一点DSL,因为犯不着那么麻烦,我也就没有采用如此刻板的解释器模式 如果你跳起来说——嘿这个我熟悉啊,我天天写的Python就是解释器语言,我说你跳。。。对了。还真是


精读C++20设计模式——行为型设计模式:命令模式

精读C++20设计模式——行为型设计模式:命令模式 前言:Lets Command! Command设计模式实际上不太Command。这个比较反直觉。因为Command设计模式压根就不是直接死命令对象到底怎么做事情。而是发送命令,接收对象根据发送者发送的命令执行代码。 命令模式干什么 命令模式将我们