SORU
18 Mayıs 2010, Salı


- Gerçek bir örnek kaçınarak kansız etki alanı modeli

Sözde anti-desen bir neden Kansız Etki alanı Modelleri ve anlamaya çalışıyorum.

İşte gerçek dünya örneği.

Özellikleri bir ton olan İşçi sınıfı, adı, cinsiyet, kullanıcı adı, vb var

public class Employee
{
    public string Name { get; set; }
    public string Gender { get; set; }
    public string Username { get; set; }
    // Etc.. mostly getters and setters
}

Gelen telefon görüşmeleri ve internet sitesi soruşturma dönen içeren bir sistemi var Next ('yol') satış personeli arasında eşit olarak bilinen Bu sistem yuvarlak-robining sorular karıştırmak gibi oldukça karmaşık, tatil, çalışanların tercihleri vb kontrol ediyor. Bu sistem şu anda bir hizmete ayrılmış: EmployeeLeadRotationService.

public class EmployeeLeadRotationService : IEmployeeLeadRotationService
{
     private IEmployeeRepository _employeeRepository;
     // ...plus lots of other injected repositories and services

     public void SelectEmployee(ILead lead)
     {
         // Etc. lots of complex logic
     }
}

Web sitesi sorgulama formu Yönetmeliğin bu gibi bir kod var o zaman:

public void SubmitForm()
{
    var lead = CreateLeadFromFormInput();

    var selectedEmployee = Kernel.Get<IEmployeeLeadRotationService>()
                                 .SelectEmployee(lead);

    Response.Write(employee.Name   " will handle your enquiry. Thanks.");
}

Gerçekten bu yaklaşım ile birçok sorunla karşılaşmam, ama güya bu bir çünkü buradan çığlık çığlığa koşmak istiyordumKansız Etki Alanı Modeli.

Ama benim için kurşun rotasyon hizmeti açık değil mantığı kendi gitmeli. Önde gidecek? Çalışanın gidecek?

Ne hakkında tüm enjekte depoları vb dönüş servisi gerektirir - nasıl olacaklardı enjekte çalışan, verilen bu çoğu zaman ile ilgili bir çalışana ihtiyacımız yok bu havuzları?

CEVAP
18 Mayıs 2010, Salı


Bu durumda, bu Etki alanı Kansız bir Model teşkil etmiyor. Kansız bir Etki alanı Modeli specifically about validating and transforming the objects. Buna bir örnek, harici bir işlev aslında Çalışanların durumu değişmiş veya bilgileri güncellenmiş olacaktır.

bu durumda ne oluyor çalışanların aldığını ve içlerinden biri, bilgiye dayalı bir seçim yapıyoruz. İyi Diğerleri inceler ve ne bulursa konusunda karar verir o ayrı bir nesne var. Tamam başka bir devlet bir nesne geçiş için kullanılan bir nesne DEĞİLDİR.

Senin durumunda Kansız Etki alanı Modelini örnek harici bir yöntem olurdu

updateHours(Employee emp) // updates the working hours for the employee

o saat bir hafta, bayrakları ise saat belli bir sınırı aşarsa geçirilen emin olmaya çalıştı Çalışan nesne ve güncelleştirmeler alır. Bu sorunu eğer sadece Çalışan nesneler varsa, o zaman doğru kısıtlamaları içinde saatlerini değiştirme konusunda hiçbir bilgiye sahip olmasıdır. Bu durumda bununla baş etmenin yolu, İşçi sınıfının içine updateHours yöntemi taşımak olacaktır. O Kansız Etki alanı Modeli anti desen dönüm noktası.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Pál Zoltán Illés

    Pál Zoltán

    30 NİSAN 2007
  • Truc Minh

    Truc Minh

    23 Ocak 2011
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007