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

  • alex maybury

    alex maybury

    20 Aralık 2007
  • Apple&Tech Reviews & Giveaways

    Apple&Tech R

    12 Temmuz 2008
  • ThePhestor

    ThePhestor

    22 Mart 2011