Multiton - wzorzec kreacyjny

0

Witam.
W Internecie znalazłem bardzo niewiele informacji na temat multitona a treść mojego zadania z programowania brzmi:

"Utwórz układ słoneczny (model). Słońce oraz każda z planet musi istnieć tylko raz. Należy wczytać atrybuty tych planet (obiektów) z bazy danych. Należy również zrealizować wariant implementacji: wczesna inicjalizacja oraz późna inicjalizacja".

Nie proszę o rozwiązanie, proszę o wskazówki jak się za to zabrać... z pozostałymi wzorcami nie mam tyle problemu co z tym. Może jakieś sugestie, fragmenty kodu?

0

Multiton to singleton zawierający mapę obiektów.

Skopiuję wersję leniwą (późna inicjalizacja) z Wikipedii:

    public class FooMultiton {
        private static final Map<Object, FooMultiton> instances = new HashMap<Object, FooMultiton>();
 
        private FooMultiton() /* also acceptable: protected, {default} */ {
            /* no explicit implementation */
        }
 
        public static FooMultiton getInstance(Object key) {
            synchronized (instances) {
 
                // Our "per key" singleton
                FooMultiton instance = instances.get(key);
 
                if (instance == null) {
 
                    // Lazily create instance
                    instance = new FooMultiton();
 
                    // Add it to map   
                    instances.put(key, instance);
                }
 
                return instance;
            }
        }
 
        // other fields and methods ...
 
    }

Wczesna inicjalizacja (inaczej zachłanna chyba) jest wtedy, gdy obiekty w mapie są tworzone przy tworzeniu singletona i skoro mapa nie jest modyfikowana po utworzeniu to nie trzeba synchronizacji dostępu.

0

Tak swoją drogą:
Jakby ktoś dał enum'y to mógłby się kłócić, że są one inicjalizowane leniwie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1