2009-07-08 9 views

Odpowiedz

5

Wzór Enablera jest tak naprawdę odmianą wzorca obserwatora. Ustawiasz obserwatorów na interesujących częściach systemu, tworząc Warunki. Enablery mogą następnie obserwować warunki i włączać/wyłączać widżety.

E.g. po załadowaniu okna tworzysz warunki, które oglądają takie rzeczy, jak lista lub pole kombi (lub model pod listą lub listą kombinacyjną) ma coś zaznaczonego. Możesz to nazwać czymś w rodzaju "cośWybranego warunku". Następnie podłączasz aktywatory do widżetów, które są powiązane z jednym lub kilkoma warunkami (które możesz i/lub razem ... chociaż zazwyczaj chcesz je i razem w praktyce).

Zwykle implementuję je, mając fabrykę widżetów tak, że jednym z parametrów, które przekazujesz, jest tablica nazwanych warunków, które razem i razem włączają/wyłączają widżet. Na przykład.

widgetFactory.createButton (String BUTTONLABEL, String methodActionName, String [] conditionNames)

W conditionNames wyszuka warunkach, które są dostępne w jakimś HashMap, creat CompositeCondition (który łączeniu wszystkich obserwowanej wartości logicznej wartości warunków) i tworzy komponent Enabler, który nasłuchuje na CompositeCondition i informuje utworzony widget, aby włączał/wyłączał w oparciu o podstawowy warunek.

Brzmi to nieco skomplikowanie, ale po utworzeniu podstawowej infrastruktury kilka linii kodu łączy warunki, a interfejs użytkownika jest zawsze zsynchronizowany z warunkami.

Nie sądzę, abym kiedykolwiek oficjalnie napisał wzorzec Enabler, albo po prostu wskazałbym ci adres URL.

HTH,

Ken

+0

Byłoby to wydaje się być ostateczną odpowiedź! (FWIW, jeśli kiedykolwiek napiszesz to poprawnie, chciałbym ten URL. :-)) Dziękuję również za bardzo pomocną i interesującą książkę. –

Powiązane problemy