Update README.md
This commit is contained in:
		@@ -9,16 +9,19 @@ tags:
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## Also known as
 | 
			
		||||
 | 
			
		||||
Registry
 | 
			
		||||
 | 
			
		||||
## Intent
 | 
			
		||||
 | 
			
		||||
Ensure a class only has limited number of instances and provide a global point of access to them.
 | 
			
		||||
 | 
			
		||||
## Explanation
 | 
			
		||||
 | 
			
		||||
Real world example
 | 
			
		||||
 | 
			
		||||
> The Nazgûl, also called ringwraiths or the Nine Riders, are Sauron's most terrible servants. By definition there's always nine of them.           
 | 
			
		||||
> The Nazgûl, also called ringwraiths or the Nine Riders, are Sauron's most terrible servants. By 
 | 
			
		||||
> definition there's always nine of them.           
 | 
			
		||||
 | 
			
		||||
In plain words
 | 
			
		||||
 | 
			
		||||
@@ -26,11 +29,14 @@ In plain words
 | 
			
		||||
 | 
			
		||||
Wikipedia says
 | 
			
		||||
 | 
			
		||||
> In software engineering, the multiton pattern is a design pattern which generalizes the singleton pattern. Whereas the singleton allows only one instance of a class to be created, the multiton pattern allows for the controlled creation of multiple instances, which it manages through the use of a map.
 | 
			
		||||
> In software engineering, the multiton pattern is a design pattern which generalizes the singleton 
 | 
			
		||||
> pattern. Whereas the singleton allows only one instance of a class to be created, the multiton 
 | 
			
		||||
> pattern allows for the controlled creation of multiple instances, which it manages through the use 
 | 
			
		||||
> of a map.
 | 
			
		||||
 | 
			
		||||
**Programmatic Example**
 | 
			
		||||
 | 
			
		||||
Nazgul is the multiton class.
 | 
			
		||||
`Nazgul` is the multiton class.
 | 
			
		||||
 | 
			
		||||
```java
 | 
			
		||||
public enum NazgulName {
 | 
			
		||||
@@ -71,7 +77,7 @@ public final class Nazgul {
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
And here's how we access the Nazgul instances.
 | 
			
		||||
And here's how we access the `Nazgul` instances.
 | 
			
		||||
 | 
			
		||||
```java
 | 
			
		||||
    LOGGER.info("KHAMUL={}", Nazgul.getInstance(NazgulName.KHAMUL));
 | 
			
		||||
@@ -83,22 +89,29 @@ And here's how we access the Nazgul instances.
 | 
			
		||||
    LOGGER.info("ADUNAPHEL={}", Nazgul.getInstance(NazgulName.ADUNAPHEL));
 | 
			
		||||
    LOGGER.info("REN={}", Nazgul.getInstance(NazgulName.REN));
 | 
			
		||||
    LOGGER.info("UVATHA={}", Nazgul.getInstance(NazgulName.UVATHA));
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
    // KHAMUL=com.iluwatar.multiton.Nazgul@2b214b94
 | 
			
		||||
    // MURAZOR=com.iluwatar.multiton.Nazgul@17814b1c
 | 
			
		||||
    // DWAR=com.iluwatar.multiton.Nazgul@7ac9af2a
 | 
			
		||||
    // JI_INDUR=com.iluwatar.multiton.Nazgul@7bb004b8
 | 
			
		||||
    // AKHORAHIL=com.iluwatar.multiton.Nazgul@78e89bfe
 | 
			
		||||
    // HOARMURATH=com.iluwatar.multiton.Nazgul@652ce654
 | 
			
		||||
    // ADUNAPHEL=com.iluwatar.multiton.Nazgul@522ba524
 | 
			
		||||
    // REN=com.iluwatar.multiton.Nazgul@29c5ee1d
 | 
			
		||||
    // UVATHA=com.iluwatar.multiton.Nazgul@15cea7b0
 | 
			
		||||
Program output:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
KHAMUL=com.iluwatar.multiton.Nazgul@2b214b94
 | 
			
		||||
MURAZOR=com.iluwatar.multiton.Nazgul@17814b1c
 | 
			
		||||
DWAR=com.iluwatar.multiton.Nazgul@7ac9af2a
 | 
			
		||||
JI_INDUR=com.iluwatar.multiton.Nazgul@7bb004b8
 | 
			
		||||
AKHORAHIL=com.iluwatar.multiton.Nazgul@78e89bfe
 | 
			
		||||
HOARMURATH=com.iluwatar.multiton.Nazgul@652ce654
 | 
			
		||||
ADUNAPHEL=com.iluwatar.multiton.Nazgul@522ba524
 | 
			
		||||
REN=com.iluwatar.multiton.Nazgul@29c5ee1d
 | 
			
		||||
UVATHA=com.iluwatar.multiton.Nazgul@15cea7b0
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Class diagram
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
## Applicability
 | 
			
		||||
 | 
			
		||||
Use the Multiton pattern when
 | 
			
		||||
 | 
			
		||||
* there must be specific number of instances of a class, and they must be accessible to clients from a well-known access point
 | 
			
		||||
* There must be specific number of instances of a class, and they must be accessible to clients from 
 | 
			
		||||
a well-known access point.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user