03 2023 档案
摘要:1.概述 访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 2.示例 Visitor 类,为该对象结构 中ConcreteElement 的每一个类声明一个 Visit 操作。 Visitor.java publ
阅读全文
摘要:1.概述 解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解
阅读全文
摘要:1.概述 享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象。 2.示例 Flyweight 类,它是所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态。 Flyweight.java public abstract class Flyweigh
阅读全文
摘要:1. 概述 职责链模式(Chain of Responsibility): 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 2. 示例 Handler 类,定义一个处理请示的接口。 Handler.ja
阅读全文
摘要:1.现象 在 SpringBoot 项目中,使用 Jackson 将Java 对象转为 Json 传给前端,但 Java 对象有 Long 类型字段,传给前端后会出现精度丢失的现象。 比如发送的 Json 字符串如下所示: 但在前端显示时,却出现了精度丢失 2.原因 这是因为在JavaScript中
阅读全文
摘要:1. 概述 命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 2. 示例 Command 类,用来声明执行操作的接口。 Command.java public abstract class Command
阅读全文
摘要:1.概述 合成/聚合复用原则(CARP),尽量使用合成/聚合,尽量不要使用类继承。 合成(Composition,也有翻译成组合)和聚合(Aggregation)都是关联的特殊种类。聚合表示一种弱的“拥有”关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分;合成则是一种强
阅读全文