SORU
27 Mayıs 2011, Cuma


Kaçınarak 'örneğin' Java

(Belki) ortak ben şu sorun var ve kesinlikle şu anda bana bulmaca:

Soyut Sınıf Event uzanan oluşturulan olay nesneleri bir çift vardır ve Oturum Fasulye bunları bölmek istiyorum

public void divideEvent(Event event) {
    if (event instanceof DocumentEvent) {
        documentGenerator.gerenateDocument(event);
    } else if (event instanceof MailEvent) {
        deliveryManager.deliverMail(event);
        ...
    }
    ...

}

Ama eğer başka uzun ve belki okunmaz olur, böylece gelecekte ikiden fazla olay türleri olabilir. Ayrıca instanceof gerçekten "en iyi" bu durumda. pratik değil bence

Event türüne soyut bir yöntem ekleyin ve onları kendisi bölmek olabilir ama o zaman her varlık içinde belirli bir Oturum Fasulye enjekte etmek zorundayım.

Orada bir "" çözüm için bu sorun? çok elde etmek için herhangi bir ipucu.

Herhangi bir yardım için teşekkür ederiz!

CEVAP
27 Mayıs 2011, Cuma


En basit yaklaşım, Olay ne biliyor diyebilirsin bir yöntem sağlar.

interface Event {
    public void onEvent(Context context);
}

class DocumentEvent implements Event {
    public void onEvent(Context context) {
         context.getDocumentGenerator().gerenateDocument(this);
    }
}

class MailEvent implements Event {
    public void onEvent(Context context) {
         context.getDeliveryManager().deliverMail(event);
    }
}


class Context {
    public void divideEvent(Event event) {
        event.onEvent(this);
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 365multimedia

    365multimedi

    26 ŞUBAT 2009
  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009