mirror of
https://github.com/tiennm99/java-design-patterns.git
synced 2026-08-20 04:23:39 +00:00
* 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>
This commit is contained in:
co-authored by
luismateoh
luis.hincapie
parent
5c1ad5c006
commit
dc7495e8bd
@@ -0,0 +1,92 @@
|
||||
---
|
||||
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
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Reference in New Issue
Block a user