摘要:
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 对象的一部分;合成则是一种强 阅读全文
摘要:
1.概述 单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 阅读全文
摘要:
1. 概述 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑用迭代器模式。 当需要对聚集有多种方式遍历时,可以考虑用迭代器模式。 迭代器为遍历不同的聚集结构提供如开始、 阅读全文
摘要:
1.概述 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 Colleague 叫做抽象同事类,而C oncreteColleague 是具体同事类,每个具体同事只知道自己的行为,而不了解其 阅读全文
摘要:
1.概述 组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 2.示例 Component 为组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理 Component 的子 阅读全文
摘要:
1 概述 备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 Originator(发起人):负责创建一个备忘录 Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Origina 阅读全文