Nomad

建造者模式

建造者模式 模式动机 软件开发中存在一些复杂对象,它们拥有一系列成员属性,这些成员属性中有些是引用类型的成员对象。而且在这些复杂对象中,还可能存在一些限制条件,如某些属性没有赋值则复杂对象不能作为一个完整的产品使用;有些属性的赋值必须按照某个顺序,一个属性没有赋值之前,另一个属性可能无法赋值等。 部件的组合过程往往被“外部化”到一个称作建造者的对象里,建造者返还给客户端的是一个已经建造...

栈和队列

栈(Stack) 特点:先进后出(LIFO),即最先插入的元素最先被移除。 核心操作: 入栈(Push):将元素添加到栈顶。 出栈(Pop):移除并返回栈顶元素。 查看栈顶元素(Peek/Top):返回栈顶元素但不移除它。 以上操作的时间复杂度均为 O(1)。 实现:栈可以使用数组或链表实现。数组实现的栈具有固定大小,而链表实现的栈可以动态扩展。 class Stack ...

拓扑排序

拓扑排序 拓扑排序是对有向无环图(DAG)的一种线性排序,使得对于每一条有向边 (u, v),顶点 u 在顶点 v 之前。拓扑排序常用于任务调度、编译依赖关系等场景。 根据定义可以的出拓扑排序的两个性质: 如果图中存在环,则不存在拓扑排序。原因: 如果图中存在环,则无法找到一个线性序列使得每个顶点都在其依赖的顶点之前。 如果图存在拓扑排序,...

装饰模式

模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制:使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机 关联机制:即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为 装饰模式以对客户透明的方式动态地给一...