Files
java-design-patterns/localization/es/registry/README.md
T
Luis Mateo Hincapié Martinez dc7495e8bd translation: Translated all creational patterns category to Spanish (Task of issue #2277) (#2813)
* 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>
2024-03-23 11:53:54 +02:00

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
![Registry](./etc/registry.png "Registry pattern 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