SORU
3 Kasım 2008, PAZARTESİ


Kansız Etki Alanı Modeli: Artıları/Eksileri

Artılarını ve eksilerini Kansız bir Etki alanı Modeli (aşağıdaki bağlantıya bakınız) kullanmak için ne olduğunu bilmek istiyorum.

Fowler Article

CEVAP
1 Mayıs 2011, Pazar


"Kansız Etki alanı Modeli anti-desen, neden bunu uygulamak o kadar çok sistemleri vardır?"

Çeşitli nedenler var

1. Sistemin karmaşıklığı

Eğer uygulamak istiyorsanız: basit bir sistem internette bulmak neredeyse tüm örnekler ve örnek kodu olan)

Siparişe ürün ekleme

Sipariş üzerine bu fonksiyonu ekledim

public void Order.AddOrderLine(Product product)
{
    OrderLines.Add(new OrderLine(product));
}

Güzel ve süper nesne yönelimli.

Hadi öyle olmasa bile ürünün stokta var olduğunu doğrulamak ve İstisna lazım emin olmak için söylemek lazım.

Gerçekten benim için Stok bağımlı olmak istemiyorum bu yana Sipariş üzerine daha fazla koymak, yapamam, şimdi hizmet gitmesi gerekiyor

public void OrderService.AddOrderLine(Order order, Product product)
{
    if (!InventoryService.Has(product)
       throw new AddProductException

    order.AddOrderLine(product);
}

Ayrıca Sipariş İİnventoryService geçerim.Başka bir seçenek AddOrderLine, ama o hala İnventoryService Sipariş bağımlı yapar.

Hala Sipariş işleve sahip değildir.AddOrderLine, ama genellikle benim deneyim için kapsam dışında çok fazla bir İş Mantığı varken Sipariş kapsamı ile sınırlı.

Sistem daha sonra sadece temel CRUD, OrderService senin mantık çoğu için çok az ile sona erecek.

2. Geliştirici OOP bakış

Varlıklar üzerinde gitmek gerekir hakkında internette hararetli tartışmalar var.

Gibi bir şey

Sipariş.Kaydet

Düzen kendini kurtarmak için nasıl bilmeli? Bunun için depoları.

Şimdi eklemek amacıyla çizgiler Sipariş edebilirsiniz? Eğer bunu mantıklı basit İngilizce kullanarak yapmaya çalışıyorum, gerçekten de anlam ifade etmiyor. Kullanıcı yapmak isteyelim ki Sipariş için Ürün ekler.() AddOrderLineToOrder? Bu overkill gibi görünüyor.

Nasıl OrderService hakkında.() AddOrderLine. Şimdi mantıklı sanki!

OOP benim anlayış sarma için işlev sınıf iç durum erişmek için gereken nerede sınıfları fonksiyonları koyman. Sipariş girmek istesem.OrderLines toplama, Düzen getirdim.() AddOrderLine Sipariş. Bu şekilde sınıf iç durum açığa almıyor.

3. IoC Kaplar

IoC konteyner kullanan sistemler genellikle tamamen bitik.

Hepsinin arayüzleri koymak sürece arabirimleri var, ama etki alanı nesneleri (kolay) test edebilir mi hangi servisler depolarınızı test edebilirsiniz çünkü.

"Şu anda tüm programlama Problemleri için çözüm bulundu, bir çok insan körü körüne takip ve bu şekilde Kansız Etki Modelleri ile bitirmek. "IoC beri

4. OOP zor, usul kolaydır

"Bu konuda, ama şunu keşfettim ki, "Curse of Knowledge biraz var Yeni geliştiriciler için DTOs ve Hizmetleri sahip olduğu çok Zengin Etki alanı daha kolay.

Muhtemelen Zengin Etki alanı ile hangi sınıflar mantığı koymak için bilmek daha zor olduğundan. Yeni sınıflar oluşturmak için ne zaman? Hangisini kullansak? vb

Vatansız hizmet sadece hizmetinde en yakın isim tokat.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KRQE

    KRQE

    6 AĞUSTOS 2007
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007
  • NextKsa

    NextKsa

    7 EKİM 2009