设计原则 前言设计原则是指导代码设计的一些经验总结。设计原则这块儿的知识有一个特点,那就是这些原则听起来都比较抽象,定义描述都比较模糊,不同的人会有不同的解读。它们共同的目标都是高内聚低耦合,高内聚用来指导类的设计,低耦合用来指导类之间的依赖关系,高内聚有助于松耦合,松耦合需要高内聚的支持。 SRP 单一职责原则原则定义:一个类或者模块只负责完成一个职责(或者功能)。类和模块可以有两种理解,一种理解是把模块 2023-03-17 设计模式 #设计原则
设计模式 <行为型> | 中介者模式 中介模式(Mediator Pattern)中介模式定义了一个单独的中介对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。 结构图: 角色: 抽象中介者(Mediator):接口声明了与组件交流的方法,但通常仅包括一个通知方法。 具体中介者(Concrete Mediator):封装了多种组件间的关系。 具体中介者通常会保存所有组件的引用并对其 2023-03-15 设计模式 #设计模式 #行为型
设计模式 <行为型> | 解释器模式 解释器模式(Interpreter Pattern)任何可以承载信息的载体,都可以称之为语言,语言如果想被理解,需要按照特定的语法去编排生成,解释器就是根据语法规则去解释语言。 结构图: 角色: 抽象表达式(Abstract Expression):声明解释器的接口,约定解释器的解释操作,主要包含解释方法 interpret()。 终结符表达式(Terminal Expression):实现与语 2023-03-15 设计模式 #设计模式 #行为型
设计模式 <行为型> | 备忘录模式 备忘录模式(Memento Pattern)在不暴露对象实现细节的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。 结构图: 角色: 发起人(Originator):类可以生成自身状态的快照, 也可以在需要时通过快照恢复自身状态。 备忘录(Memento):存储发起人状态快照,在进行恢复时提供给发起人需要的状态。 管理者(Caretaker):备忘录管理 2023-03-14 设计模式 #设计模式 #行为型
设计模式 <行为型> | 命令模式 命令模式(Command Pattern)命令模式将请求/命令封装为一个对象,可以使用不同的请求参数化其他对象,并且能够支持请求的排队执行、记录日志、撤销等功能。 结构图: 角色: 发送者(Sender)/触发者(Invoker):负责对请求进行初始化,其中必须包含一个成员变量来存储对于命令对象的引用。 命令(Command):接口通常仅声明一个执行命令的方法。 具体命令(Concrete Co 2023-03-14 设计模式 #设计模式 #行为型
设计模式 <行为型> | 访问者模式 访问者模式(Visitor Pattern)访问者模式就是将对象和对象本身的动作解耦,让操作可以独自变化。 结构图: 角色 抽象访问者(Visitor):为每一个具体元素类声明一个具体访问者的操作。 具体访问者(Concrete Visitor):实现抽象访问者中的操作。可以有多个实现。 抽象元素(Element):接口申明一个 accept 方法表示接受访问者的访问。该方法必须有一个参数被声明 2023-03-13 设计模式 #设计模式 #行为型
设计模式 <行为型> | 迭代器模式 迭代器模式(Iterator Pattern)迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。集合对象也可以叫容器、聚合对象。 结构图: 角色: 迭代器(Iterator):声明遍历集合所需的一系列操作。 具体迭代器(Concrete Iterators):实现迭代器申明的所有接口。 集合(Collection):声明一个或多个方法来获取与集合兼容的迭代器 2023-03-13 设计模式 #设计模式 #行为型
设计模式 <行为型> | 状态模式 状态模式(State Pattern)状态模式能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 结构图: 角色: 上下文(Context): 保存了对于一个具体状态对象的引用,并会将所有与该状态相关的工作委派给它。上下文通过状态接口与状态对象交互,且会提供一个设置器用于传递新的状态对象。 状态(State):抽象状态类或者接口,定义一个或一组行为,表示该状态下的行 2023-03-10 设计模式 #设计模式 #行为型
设计模式<结构型> | 责任链模式 责任链模式(Chain of Responsibility Pattern)将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。 结构图: 角色: 抽象处理者(Handler):声明了所有具体处理者的通用接口。 该接口通常仅包含单个方法用于请求处理, 有时其还会包含一个设置链上下个处理者的方法。 基 2023-03-09 设计模式 #设计模式 #行为型
设计模式 <行为型> | 策略者模式 策略者模式(Strategy Pattern)定义一系列算法, 并将每种算法分别放入独立的类中,让它们可以互相替换。 结构图:角色: 上下文(Context): 包含策略接口的引用,通过策略接口与该对象进行交流。 策略(Strategy):所有具体策略的通用接口,给出所有具体策略类所需实现的接口。 具体策略(Concrete Strategies):实现了各种算法或行为。 适用场景: 许多仅 2023-03-08 设计模式 #设计模式 #行为型