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

  • Felice Musique

    Felice Musiq

    22 NİSAN 2014
  • lilstevie89

    lilstevie89

    25 Mart 2011
  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006