31
31
* pattern defines many globally accessible objects. The client asks for the correct instance from
32
32
* the Multiton by passing an enumeration as parameter.
33
33
* <p>
34
- * In this example {@link Nazgul} is the Multiton and we can ask single {@link Nazgul} from it using
35
- * {@link NazgulName}. The {@link Nazgul}s are statically initialized and stored in concurrent hash
36
- * map.
34
+ * There is more than one way to implement the multiton design pattern. In the first example
35
+ * {@link Nazgul} is the Multiton and we can ask single {@link Nazgul} from it using {@link NazgulName}.
36
+ * The {@link Nazgul}s are statically initialized and stored in concurrent hash map.
37
+ * <p>
38
+ * In the enum implementation {@link NazgulEnum} is the multiton. It is static and mutable because
39
+ * of the way java supports enums.
37
40
*
38
41
*/
39
42
public class App {
@@ -46,6 +49,7 @@ public class App {
46
49
* @param args command line args
47
50
*/
48
51
public static void main (String [] args ) {
52
+ // eagerly initialized multiton
49
53
LOGGER .info ("KHAMUL={}" , Nazgul .getInstance (NazgulName .KHAMUL ));
50
54
LOGGER .info ("MURAZOR={}" , Nazgul .getInstance (NazgulName .MURAZOR ));
51
55
LOGGER .info ("DWAR={}" , Nazgul .getInstance (NazgulName .DWAR ));
@@ -55,5 +59,16 @@ public static void main(String[] args) {
55
59
LOGGER .info ("ADUNAPHEL={}" , Nazgul .getInstance (NazgulName .ADUNAPHEL ));
56
60
LOGGER .info ("REN={}" , Nazgul .getInstance (NazgulName .REN ));
57
61
LOGGER .info ("UVATHA={}" , Nazgul .getInstance (NazgulName .UVATHA ));
62
+
63
+ // enum multiton
64
+ LOGGER .info ("KHAMUL={}" , NazgulEnum .KHAMUL );
65
+ LOGGER .info ("MURAZOR={}" , NazgulEnum .MURAZOR );
66
+ LOGGER .info ("DWAR={}" , NazgulEnum .DWAR );
67
+ LOGGER .info ("JI_INDUR={}" , NazgulEnum .JI_INDUR );
68
+ LOGGER .info ("AKHORAHIL={}" , NazgulEnum .AKHORAHIL );
69
+ LOGGER .info ("HOARMURATH={}" , NazgulEnum .HOARMURATH );
70
+ LOGGER .info ("ADUNAPHEL={}" , NazgulEnum .ADUNAPHEL );
71
+ LOGGER .info ("REN={}" , NazgulEnum .REN );
72
+ LOGGER .info ("UVATHA={}" , NazgulEnum .UVATHA );
58
73
}
59
74
}
0 commit comments