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

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006