[译]微服务设计模式

基于微服务的应用程序的主要特征在 微服务、单体和 NoOps 中定义。它们是功能分解或领域驱动设计、定义良好的接口、明确发布的接口、单一责任原则和潜在的多语言。每项服务都是完全自主和全栈的。 因此,更改服务实现不会影响其他服务,因为它们使用定义良好的接口进行通信。这种应用程序有几个优点,但它不是 免费的午餐,需要在 NoOps 方面付出大量努力。 ...

2023-06-26 · 6 min · 2646 words · chensoul

Java设计模式:Aggregator Microservices

本文主要介绍 Aggregator Microservices 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-06-26 · 9 min · 4055 words · chensoul

《Effective Java 3》笔记15:尽量减少类和成员的可访问性

本文是 《Effective Java 3》第四章《类和接口》的学习笔记:尽量减少类和成员的可访问性。 类和接口是 Java 编程语言的核心。它们是抽象的基本单位。该语言提供了许多强大的元素,你可以使用它们来设计类和接口。 介绍 《Effective Java, Third Edition》这本书中的第四章主要讲述了如何尽量减少类和成员的可访问性,以提高代码的封装性、安全性和可维护性。 ...

2023-06-15 · 6 min · 2802 words · chensoul

《Effective Java 3》笔记16:在公共类中,使用访问器方法,而不是公共字段

本文是 《Effective Java 3》第四章《类和接口》的学习笔记:在公共类中,使用访问器方法,而不是公共字段。 介绍 与其直接将类的内部字段公开为公共字段,推荐使用访问器方法(也称为 getter 和 setter)来访问和修改对象的状态。这样可以使类对其内部表示保持控制,并为类的客户端提供一种抽象程度。 ...

2023-06-15 · 4 min · 1920 words · chensoul

Java设计模式:Adapter

本文主要介绍 Adapter 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-06-10 · 12 min · 5685 words · chensoul

Java设计模式:Visitor

本文主要介绍 Visitor 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-06-02 · 14 min · 6679 words · chensoul

Java设计模式:Acyclic Visitor

本文主要介绍 Acyclic Visitor 模式,在 Java Design Patterns 网站上有对该模式进行介绍。这里主要是做个笔记,并添加一些扩展,以加深对该设计模式的理解。 Java Design Patterns 提供了各种 Java 设计模式的介绍、示例代码和用例说明。该网站旨在帮助 Java 开发人员了解和应用各种常见的设计模式,以提高代码的可读性、可维护性和可扩展性。 ...

2023-06-01 · 13 min · 6411 words · chensoul

《Effective Java 3》笔记12:当覆盖 equals 方法时,总要覆盖 hashCode 方法

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:始终覆盖 toString 方法。 介绍 虽然 Object 提供 toString 方法的实现,但它返回的字符串通常不是类的用户希望看到的。它由后跟「at」符号(@)的类名和 hash 代码的无符号十六进制表示(例如 PhoneNumber@163b91)组成。toString 的通用约定是这么描述的,返回的字符串应该是「简洁但信息丰富的表示,易于阅读」。虽然有人认为 PhoneNumber@163b91 简洁易懂,但与 707-867-5309 相比,它的信息量并不大。toString 约定接着描述,「建议所有子类覆盖此方法。」好建议,确实! ...

2023-05-26 · 7 min · 3162 words · chensoul

《Effective Java 3》笔记13:明智地覆盖 clone 方法

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:明智地覆盖 clone 方法。 介绍 Cloneable 接口的目的是作为 mixin 接口,用于让类来宣称它们允许克隆。不幸的是,它没有达到这个目的。它的主要缺点是缺少 clone 方法,并且 Object 类的 clone 方法是受保护的。如果不求助于反射,就不能仅仅因为对象实现了 Cloneable 接口就能调用 clone 方法。即使反射调用也可能失败,因为不能保证对象具有可访问的 clone 方法。尽管存在多种缺陷,但该机制的使用范围相当广泛,因此理解它是值得的。本条目将告诉你如何实现行为良好的 clone 方法,讨论什么时候应该这样做,并提供替代方案。 ...

2023-05-26 · 16 min · 7657 words · chensoul

《Effective Java 3》笔记14:考虑实现 Comparable 接口

本文是 《Effective Java 3》第三章《对象的通用方法》的学习笔记:考虑实现 Comparable 接口。 介绍 与本章讨论的其他方法不同,compareTo 方法不是在 Object 中声明的。相反,它是 Comparable 接口中的唯一方法。它在性质上类似于 Object 的 equals 方法,除了简单的相等比较之外,它还允许顺序比较,而且它是通用的。一个类实现 Comparable,表明实例具有自然顺序。对实现 Comparable 的对象数组进行排序非常简单: ...

2023-05-26 · 10 min · 4999 words · chensoul