2009-03-21 16 views
7

Bir ASP.NET MVC uygulamasında Depozit Kalıbı'nı (http://www.asp.net/mvc sitesindeki örnekler gibi) kullanıyorum. Biri ProductRepository adlı diğeri CategoryRepository adlı iki depomuz var. Depoları doğrulamak ve çağırmak için iki hizmet, Kategori Hizmeti ve Ürün Hizmeti'ni de kullanıyorum. ProductService'de bir kategori listesine ihtiyacım var; bu, bir tanesinin CategoryRepository'de zaten uygulanmış olduğu bir yöntem. Sorum şu: Hangi ProductService from CategoryRepository içinde bulunan ListCategories yöntemini çağırmak için doğru yolu nedir? ProductRepository'de (DRY felsefesi) başka bir ListCategories yöntemi uygulamak istemiyorum. Teşekkürler.Depolar arasında arama yöntemleri - Havuz Kalıbı

cevap

4

Benzer depoları bir servise aktarmanızı öneririm. Dolayısıyla, bir e-Ticaret uygulaması oluşturuyorsanız ProductRepository, CategoryRepository vb. CatalogService gibi bir şeye dönüştürün ve ilgili tüm depoları barındırmasını sağlayın.

+1

+1. Genel olarak bu, sizi işletmede ayrılan, varlıklara değil, hizmetlere bırakıyor. –

+3

Peki, Katalog Hizmeti bir ürünü güncellemek için ProductRepo'yu ve bir hizmet yönteminde bir kategoriyi güncellemek için CategoryRepo'yu kullandığında ne olur? Bu, ProductRepo değişikliklerinin tek bir işlemde yapıldığını ve CategoryRepo değişikliklerinin başka bir işlemde yapıldığını mı gösterir? ProductRepo'nun kategorileri değiştirmesine izin vermedikçe repo işlemlerinin ayrık olduğunu her zaman düşündüm. İnsanlar gerçek dünyada ne yapar? – IanT8

3

Bir seçenek ProductService sınıfının bir CategoryService örneğini sağlamaktır.

public class ProductService { 
    ICategoryService _categoryService = null; 

    public ProductService(ICategoryService categoryService) { 
     _categoryService = categoryService; 
    } 
} 

Daha sonra herhangi bir spesifik CategoryService uygulanmasına direk bağlantı kurmak zorunda kalmadan ProductService gelen kategori listeleri erişebilir.

İlgili konular