Active Object

目的

活动对象设计模式使每个驻留在其控制线程中的对象的方法执行与方法调用脱钩。 目的是通过使用异步方法调用和用于处理请求的调度程序来引入并发。

解释

实现活动对象模式的类将包含自同步机制,而无需使用“同步”方法。

真实世界例子

兽人以其野性和顽强的灵魂而著称。 似乎他们有基于先前行为的控制线程。

要实现具有自己的控制机制线程并仅公开其API而不公开自己的执行,我们可以使用活动对象模式。

程序示例


iluwatarConcurrencyPerformance大约 1 分钟
Caching

目的

为了避免昂贵的资源重新获取,方法是在资源使用后不立即释放资源。资源保留其身份,保留在某些快速访问的存储中,并被重新使用,以避免再次获取它们。

类图

适用性

在以下情况下使用缓存模式

  • 重复获取,初始化和释放同一资源会导致不必要的性能开销。

鸣谢


iluwatarBehavioralPerformanceCloud distributed小于 1 分钟
Circuit Breaker

意图

以这样一种方式处理昂贵的远程服务调用,即单个服务/组件的故障不会导致整个应用程序宕机,我们可以尽快重新连接到服务。

解释

真实世界例子

想象一个 Web 应用程序,它同时具有用于获取数据的本地文件/图像和远程服务。 这些远程服务有时可能健康且响应迅速,或者由于各种原因可能在某 个时间点变得缓慢和无响应。因此,如果其中一个远程服务缓慢或未成功响应,我们的应用程序将尝试使用多个线程/进程从远程服务获取响应,很快它们都会挂起(也称为 [线程饥饿]thread starvation)导致我们的整个 Web 应用程序崩溃。我们应该能够检测到这种情况并向用户显示适当的消息,以便他/她可以探索不受远程服务故障影响的应用程序的其他部分。 同时,其他正常工作的服务应保持正常运行,不受此故障的影响。


iluwatarBehavioralPerformanceDecouplingCloud distributed大约 6 分钟
Data Transfer Object

目的

次将具有多个属性的数据从客户端传递到服务器,以避免多次调用远程服务器。

解释

真实世界例子

我们需要从远程数据库中获取有关客户的信息。 我们不使用一次查询一个属性,而是使用DTO一次传送所有相关属性。

通俗的说

使用DTO,可以通过单个后端查询获取相关信息。

维基百科说

在编程领域,数据传输对象(DTO)是在进程之间承载数据的对象。 使用它的动机是,通常依靠远程接口(例如Web服务)来完成进程之间的通信,在这种情况下,每个调用都是昂贵的操作。

因为每个(方法)调用的大部分成本与客户端和服务器之间的往返时间有关,所以减少调用数量的一种方法是使用一个对象(DTO)来聚合将要在多次调用间传输的数据,但仅由一个调用提供。


iluwatarArchitecturalPerformance大约 2 分钟
Dirty Flag

或称

  • 是否脏 模式

目的

避免昂贵资源的重新获取。资源保留其身份,保留在某些快速访问的存储中,并被重新使用以避免再次获取它们。

类图

适用性

在以下情况下使用脏标志模式

  • 重复获取,初始化,释放相同资源所导致不必要的性能开销

鸣谢


iluwatarBehavioralGame programmingPerformance小于 1 分钟
Double Checked Locking

含义

通过先测试锁定标准("锁提示")而不实际获取锁的方式来减少获取锁的开销。只有当锁定标准检查表明需要锁定时,才进行实际的锁定逻辑。

类图

适用场景

在以下场景适合使用双重锁检查模式:

  • 在创建对象时有存在并发的访问。如单例模式中,你想创建同一个类的单个实例,如果存在两个或更多的线程对实例进行判空,仅仅检查该该实例是否为空可能是不够的。
  • 在一个方法上存在并发访问,该方法的行为是根据一些约束条件而改变,而这些约束条件在该方法中也会发生变化。

iluwatarIdiomPerformance小于 1 分钟
Sharding

含义

分片模式是指将数据存储划分为水平分区或分片。每个分片都有相同的模式,但持有自己独特的数据子集。

一个分片本身就是一个数据存储(它可以包含许多不同类型的实体的数据),运行在作为存储节点的服务器上。

类图

适用场景

这种设计模式提供了一下的好处:

  • 你可以通过增加在额外的存储节点上,运行的更多分片来实现系统扩容。
  • 系统可以使用现成的廉价硬件,而不是为每个存储节点使用专门(或者昂贵)的服务器硬件。
  • 你可以通过平衡各分片之间的工作负载来减少竞争,以提高性能。
  • 在云环境中,分片可以在物理上靠近访问该节点数据的用户。

iluwatarBehavioralPerformanceCloud distributed小于 1 分钟