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

  • booba1234

    booba1234

    22 Temmuz 2006
  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • Unbox Therapy

    Unbox Therap

    21 Aralık 2010