2009-07-08 17 views
5

Ken Auer kayıtsızca bir Etkinleştirici deseni bahseder. Kent Beck ayrıca (2004 8 Kasım tarihli bir e-postada en azından) o bahseder, ama ben her zamanki yerlerde hiçbir ayrıntı (Google, c2.com de wiki, vb)Ken Auer tarafından popülerleştirilen Etkinleştirici modeliyle ilgili daha fazla bilgiyi nerede bulabilirim? adlı kitabında <em>Extreme Programming Uygulamalı</em> yılında

bulmak mümkün olmamıştır

Daha fazla bilgiyi nerede bulabilirim?

cevap

5

Enabler desen gerçekten Gözlemci deseninin sadece bir varyasyonu. Bir sistemin ilginç kısımlarını gözlemleyenler oluşturarak Koşullar oluşturuyorsunuz. Etkinleştiriciler daha sonra koşulları gözlemleyebilir ve widget'ları etkinleştirebilir/devre dışı bırakabilir.

E.g. Bir Pencereyi yüklediğinizde, bir listenin veya birleşik giriş kutusunun (veya listenin veya birleşik giriş kutusunun altındaki bir modelin) bir şeyin seçilip seçilmediği gibi şeyler izleyen Koşullar oluşturursunuz. "SomethingSelectedCondition" gibi bir şey diyebilirsiniz. Daha sonra, bir veya daha fazla koşula bağlı olan widget'ları etkinleştirirsiniz (ki genellikle ve/veya birlikte olabilirsiniz ... ama tipik olarak sadece pratikte bir araya gelmek istiyorsunuz).

Ben genellikle geçmek parametrelerden biri araya anded zaman, bir widget etkinleştirmek/devre dışı bırakmak, adlandırılmış koşullar dizisi olacak şekilde bir widget fabrikası alarak bunları uygulamak. Örneğin.

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

bir CompositeCondition (HashMap bir çeşit mevcuttur Koşullar aramak kuracakları conditionNames olan ANDs gözlenen boolean tüm koşulların değerleri) ve CompositeCondition'ı dinleyen bir Enabler oluşturur ve oluşturulan gerecin altta yatan duruma göre etkinleştirilip devre dışı bırakılmasını söyler.

Biraz karmaşık geliyor, ancak altta yatan altyapıyı oluşturduktan sonra, kod tel yukarı koşulları ve sonra kullanıcı arayüzünün birkaç satır koşulları ile her zaman senkronize olduğunu.

Ben hiç resmen Enabler örnek modelin yazdı sanmıyorum, yoksa bir URL'ye işaret sadece ederim.

HTH,

Ken

+0

Bu kesin bir cevap olacak gibi görünüyor! (FWIW, eğer düzgün bir şekilde yazmış olsaydın bu URL'yi çok sevirdim. :-)) Çok yardımcı ve ilginç bir kitap için de teşekkürler. –

İlgili konular