2009-08-16 21 views

Odpowiedz

2

"Klasa kontekstu wykonania" jest po prostu klasą właściciela, utworzoną przez najwyższy poziom programu, który przechowuje wszystkie rzeczy (takie jak obiekt Transakcja w połączonym przykładzie) od najwyższego poziomu, który może być potrzebny.

To spakowany sposób na uniknięcie zmiennych globalnych.

Niektórzy uważają, że nawet to jest trochę skeezy, ponieważ jeśli najlepsze połączenia A, które wywołują B, który wywołuje C, który wywołuje D, który potrzebuje najwyższego poziomu, musisz przekazać kontekst do A, B i C, które w przeciwnym razie tego nie potrzebujesz.

I dlatego promuje wiązanie tam, gdzie nie byłoby to potrzebne - A, B i C nie nadają się do ponownego użycia w programie, który nie wykorzystuje tego kontekstu. Ale jest to doskonale funkcjonalna alternatywa dla ukrytego globalnego stanu i nieskończonej proliferacji singletonów i innych nieporządnych rzeczy.

Edit: ten akapit jest nieprawidłowy: Polecam skorzystanie z klasy ExecutionContext w javax.resource.spi.work ( http://www.j2ee.me/j2ee/1.4/docs/api/javax/resource/spi/work/ExecutionContext.html), bo przynajmniej ogranicza wiązanie na zajęciach interweniujących do normy, zamiast coś specyficznego dla aplikacji.

+0

dowolny przykład użycia javax.resource.spi.work.ExecutionContext? – cometta

+0

Uhhh, jestem zawstydzony tutaj. Zrobiłem to szybko, opierając się na zbyt szybkiej lekturze javadoc. To, err, nie spełnia twoich potrzeb. Zamierzam edytować moją odpowiedź, aby to odzwierciedlić. – CPerkins

Powiązane problemy