Yeniden kullanılabilir iş nesneleri kullanırken, görünüm modelleri oluştururken en iyi uygulama nedir?
Builder
Görünüm modellerimizi oluşturmak için çağırdığımız bir nesne kullanıyoruz . Her bir mantıksal görünüm birimi (siparişler, kullanıcılar vb.) İçin bir oluşturucu; burada her birim bir dizi farklı görünüm modeli içerebilir (siparişler özet, sipariş satırları vb. İçerir).
Bir üretici, bir görünüm modeli oluşturmak için verileri bir veya daha fazla standart iş nesnesinden alabilir.
Görünüm modellerinde iş nesnelerini / modellerini kullanma konusunda daha iyi uygulama nedir?
Yaklaşım 1
Görünüm modelinde iş nesnelerinin kullanılmasına izin verilsin mi?
//Business object in some library
public class Order
{
public int OrderNum;
public int NumOrderLines;
//...
}
//Order builder in website
public class OrderBuilder
{
public OrderSummary BuildSummaryForOrder(int OrderNum)
{
Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
//Any exception handling, additional logic, or whatever
OrderSummary obModel = new OrderSummary();
obModel.Order = obOrder;
return obModel;
}
}
//View model
public class OrderSummary
{
public Some.Business.Logic.Order Order;
//Other methods for additional logic based on the order
//and other properties
}
Yaklaşım 2
İşletme nesnelerinden yalnızca gerekli verileri alın
//Business object in some library
public class Order
{
public int OrderNum;
public int NumOrderLines;
//...
}
//Order builder in website
public class OrderBuilder
{
public OrderSummary BuildSummaryForOrder(int OrderNum)
{
Some.Business.Logic.Order obOrder = Some.Business.Logic.GetOrder(OrderNum);
//Any exception handling, additional logic, or whatever
OrderSummary obModel = new OrderSummary()
{
OrderNum = obOrder.OrderNum,
NumOrderLnes = obOrder.NumOrderLines,
}
return obModel;
}
}
//View model
public class OrderSummary
{
public int OrderNum;
public int NumOrderLines
//Other methods for additional logic based on the order
//and other properties
}
Her ikisinin de yararlarını ve dezavantajlarını görebiliyorum, ama kabul edilmiş bir yaklaşım olup olmadığını merak ediyorum. Yaklaşım 1'de, kodların modellerin çoğaltılması söz konusu değildir, ancak iş mantığına bağımlılık yaratır. 2. yaklaşımda, yalnızca görünüm için gereken verileri alırsınız, ancak kodlar modellerin çevresinde çoğaltılır.