mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-05-16 14:59:21 +00:00
dc7495e8bd
* Typo corrections * bridge pattern translated to spanish * builder pattern translated to spanish * context-object pattern translated to spanish * converter pattern translated to spanish * dependency injection pattern translated to spanish * factory pattern translated to spanish * factory-kit pattern translated to spanish * factory-method pattern translated to spanish * monostate pattern translated to spanish * multiton pattern translated to spanish * object mother pattern translated to spanish * object pool pattern translated to spanish * property pattern translated to spanish * prototype pattern translated to spanish * registry pattern translated to spanish * step builder pattern translated to spanish * value object pattern translated to spanish * typo corrections and resources urls refactor * grammar corrections * Add image to each pattern --------- Co-authored-by: luismateoh <luismateohm@gmail.com> Co-authored-by: luis.hincapie <luis.hincapie@blankfactor.com>
93 lines
1.9 KiB
Markdown
93 lines
1.9 KiB
Markdown
---
|
|
title: Registry
|
|
category: Creational
|
|
language: es
|
|
tag:
|
|
- Instantiation
|
|
---
|
|
|
|
## Propósito
|
|
|
|
Almacena los objetos de una única clase y proporciona un punto de acceso global a los mismos.
|
|
Similar al patrón Multiton, la única diferencia es que en un registro no hay restricción en el número de objetos.
|
|
|
|
## Explicación
|
|
|
|
En pocas palabras
|
|
|
|
> El registro es un objeto bien conocido que otros objetos pueden utilizar para encontrar objetos y servicios comunes.
|
|
|
|
**Ejemplo Programático**
|
|
A continuación se muestra una clase `Cliente
|
|
|
|
```java
|
|
public class Customer {
|
|
|
|
private final String id;
|
|
private final String name;
|
|
|
|
public Customer(String id, String name) {
|
|
this.id = id;
|
|
this.name = name;
|
|
}
|
|
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
}
|
|
```
|
|
|
|
Este registro de los objetos `Customer` es `CustomerRegistry`.
|
|
|
|
```java
|
|
public final class CustomerRegistry {
|
|
|
|
private static final CustomerRegistry instance = new CustomerRegistry();
|
|
|
|
public static CustomerRegistry getInstance() {
|
|
return instance;
|
|
}
|
|
|
|
private final Map<String, Customer> customerMap;
|
|
|
|
private CustomerRegistry() {
|
|
customerMap = new ConcurrentHashMap<>();
|
|
}
|
|
|
|
public Customer addCustomer(Customer customer) {
|
|
return customerMap.put(customer.getId(), customer);
|
|
}
|
|
|
|
public Customer getCustomer(String id) {
|
|
return customerMap.get(id);
|
|
}
|
|
|
|
}
|
|
```
|
|
|
|
## Diagrama de Clases
|
|
|
|

|
|
|
|
## Aplicabilidad
|
|
|
|
Usar el patrón Registry cuando
|
|
|
|
* El cliente quiere una referencia de algún objeto, por lo que el cliente puede buscar ese objeto en el registro del
|
|
objeto.
|
|
|
|
## Consecuencias
|
|
|
|
Un gran número de objetos voluminosos añadidos al registro daría lugar a un gran consumo de memoria, ya que los objetos
|
|
del registro no se recogen de la basura.
|
|
|
|
## Créditos
|
|
|
|
* https://www.martinfowler.com/eaaCatalog/registry.html
|
|
* https://wiki.c2.com/?RegistryPattern
|