@@ -15,18 +15,18 @@ Registry
15
15
16
16
## Intent
17
17
18
- Ensure a class only has limited number of instances and provide a global point of access to them.
18
+ Ensure a class only has a limited number of instances and provide a global point of access to them.
19
19
20
20
## Explanation
21
21
22
- Real world example
22
+ Real- world example
23
23
24
24
> The Nazgûl, also called ringwraiths or the Nine Riders, are Sauron's most terrible servants. By
25
- > definition there's always nine of them.
25
+ > definition, there's always nine of them.
26
26
27
27
In plain words
28
28
29
- > Multiton pattern ensures there's predefined amount of instances available globally.
29
+ > Multiton pattern ensures there are a predefined amount of instances available globally.
30
30
31
31
Wikipedia says
32
32
@@ -81,29 +81,54 @@ public final class Nazgul {
81
81
And here's how we access the ` Nazgul ` instances.
82
82
83
83
``` java
84
- LOGGER . info(" KHAMUL={}" , Nazgul . getInstance(NazgulName . KHAMUL ));
85
- LOGGER . info(" MURAZOR={}" , Nazgul . getInstance(NazgulName . MURAZOR ));
86
- LOGGER . info(" DWAR={}" , Nazgul . getInstance(NazgulName . DWAR ));
87
- LOGGER . info(" JI_INDUR={}" , Nazgul . getInstance(NazgulName . JI_INDUR ));
88
- LOGGER . info(" AKHORAHIL={}" , Nazgul . getInstance(NazgulName . AKHORAHIL ));
89
- LOGGER . info(" HOARMURATH={}" , Nazgul . getInstance(NazgulName . HOARMURATH ));
90
- LOGGER . info(" ADUNAPHEL={}" , Nazgul . getInstance(NazgulName . ADUNAPHEL ));
91
- LOGGER . info(" REN={}" , Nazgul . getInstance(NazgulName . REN ));
92
- LOGGER . info(" UVATHA={}" , Nazgul . getInstance(NazgulName . UVATHA ));
84
+ // eagerly initialized multiton
85
+ LOGGER . info(" Printing out eagerly initialized multiton contents" );
86
+ LOGGER . info(" KHAMUL={}" , Nazgul . getInstance(NazgulName . KHAMUL ));
87
+ LOGGER . info(" MURAZOR={}" , Nazgul . getInstance(NazgulName . MURAZOR ));
88
+ LOGGER . info(" DWAR={}" , Nazgul . getInstance(NazgulName . DWAR ));
89
+ LOGGER . info(" JI_INDUR={}" , Nazgul . getInstance(NazgulName . JI_INDUR ));
90
+ LOGGER . info(" AKHORAHIL={}" , Nazgul . getInstance(NazgulName . AKHORAHIL ));
91
+ LOGGER . info(" HOARMURATH={}" , Nazgul . getInstance(NazgulName . HOARMURATH ));
92
+ LOGGER . info(" ADUNAPHEL={}" , Nazgul . getInstance(NazgulName . ADUNAPHEL ));
93
+ LOGGER . info(" REN={}" , Nazgul . getInstance(NazgulName . REN ));
94
+ LOGGER . info(" UVATHA={}" , Nazgul . getInstance(NazgulName . UVATHA ));
95
+
96
+ // enum multiton
97
+ LOGGER . info(" Printing out enum-based multiton contents" );
98
+ LOGGER . info(" KHAMUL={}" , NazgulEnum . KHAMUL );
99
+ LOGGER . info(" MURAZOR={}" , NazgulEnum . MURAZOR );
100
+ LOGGER . info(" DWAR={}" , NazgulEnum . DWAR );
101
+ LOGGER . info(" JI_INDUR={}" , NazgulEnum . JI_INDUR );
102
+ LOGGER . info(" AKHORAHIL={}" , NazgulEnum . AKHORAHIL );
103
+ LOGGER . info(" HOARMURATH={}" , NazgulEnum . HOARMURATH );
104
+ LOGGER . info(" ADUNAPHEL={}" , NazgulEnum . ADUNAPHEL );
105
+ LOGGER . info(" REN={}" , NazgulEnum . REN );
106
+ LOGGER . info(" UVATHA={}" , NazgulEnum . UVATHA );
93
107
```
94
108
95
109
Program output:
96
110
97
111
```
98
- KHAMUL=com.iluwatar.multiton.Nazgul@2b214b94
99
- MURAZOR=com.iluwatar.multiton.Nazgul@17814b1c
100
- DWAR=com.iluwatar.multiton.Nazgul@7ac9af2a
101
- JI_INDUR=com.iluwatar.multiton.Nazgul@7bb004b8
102
- AKHORAHIL=com.iluwatar.multiton.Nazgul@78e89bfe
103
- HOARMURATH=com.iluwatar.multiton.Nazgul@652ce654
104
- ADUNAPHEL=com.iluwatar.multiton.Nazgul@522ba524
105
- REN=com.iluwatar.multiton.Nazgul@29c5ee1d
106
- UVATHA=com.iluwatar.multiton.Nazgul@15cea7b0
112
+ 20:35:07.413 [main] INFO com.iluwatar.multiton.App - Printing out eagerly initialized multiton contents
113
+ 20:35:07.417 [main] INFO com.iluwatar.multiton.App - KHAMUL=com.iluwatar.multiton.Nazgul@48cf768c
114
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - MURAZOR=com.iluwatar.multiton.Nazgul@7960847b
115
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - DWAR=com.iluwatar.multiton.Nazgul@6a6824be
116
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - JI_INDUR=com.iluwatar.multiton.Nazgul@5c8da962
117
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - AKHORAHIL=com.iluwatar.multiton.Nazgul@512ddf17
118
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - HOARMURATH=com.iluwatar.multiton.Nazgul@2c13da15
119
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - ADUNAPHEL=com.iluwatar.multiton.Nazgul@77556fd
120
+ 20:35:07.419 [main] INFO com.iluwatar.multiton.App - REN=com.iluwatar.multiton.Nazgul@368239c8
121
+ 20:35:07.420 [main] INFO com.iluwatar.multiton.App - UVATHA=com.iluwatar.multiton.Nazgul@9e89d68
122
+ 20:35:07.420 [main] INFO com.iluwatar.multiton.App - Printing out enum-based multiton contents
123
+ 20:35:07.420 [main] INFO com.iluwatar.multiton.App - KHAMUL=KHAMUL
124
+ 20:35:07.420 [main] INFO com.iluwatar.multiton.App - MURAZOR=MURAZOR
125
+ 20:35:07.420 [main] INFO com.iluwatar.multiton.App - DWAR=DWAR
126
+ 20:35:07.420 [main] INFO com.iluwatar.multiton.App - JI_INDUR=JI_INDUR
127
+ 20:35:07.421 [main] INFO com.iluwatar.multiton.App - AKHORAHIL=AKHORAHIL
128
+ 20:35:07.421 [main] INFO com.iluwatar.multiton.App - HOARMURATH=HOARMURATH
129
+ 20:35:07.421 [main] INFO com.iluwatar.multiton.App - ADUNAPHEL=ADUNAPHEL
130
+ 20:35:07.421 [main] INFO com.iluwatar.multiton.App - REN=REN
131
+ 20:35:07.421 [main] INFO com.iluwatar.multiton.App - UVATHA=UVATHA
107
132
```
108
133
109
134
## Class diagram
@@ -114,5 +139,5 @@ UVATHA=com.iluwatar.multiton.Nazgul@15cea7b0
114
139
115
140
Use the Multiton pattern when
116
141
117
- * There must be specific number of instances of a class, and they must be accessible to clients from
142
+ * There must be a specific number of instances of a class, and they must be accessible to clients from
118
143
a well-known access point.
0 commit comments