Saat menggunakan objek bisnis yang dapat digunakan kembali, praktik apa yang dianggap terbaik saat membangun model tampilan?
Kami menggunakan objek yang kami sebut Builder
untuk membangun model tampilan kami. Satu pembangun untuk setiap unit tampilan logis (pesanan, pengguna, dll), di mana setiap unit dapat berisi sejumlah model tampilan yang berbeda (pesanan berisi ringkasan, baris pesanan, dll).
Pembangun dapat menarik data melalui satu atau lebih objek bisnis standar untuk membangun model tampilan.
Apa yang dianggap praktik yang lebih baik ketika menggunakan objek / model bisnis dalam model tampilan?
Pendekatan 1
Izinkan penggunaan objek bisnis dalam model tampilan?
//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
}
Pendekatan 2
Ambil hanya data yang diperlukan dari objek bisnis
//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
}
Saya bisa melihat manfaat dan kekurangannya, tetapi saya ingin tahu apakah ada pendekatan yang diterima? Dalam pendekatan 1, tidak ada duplikasi kode di sekitar model, tetapi itu menciptakan ketergantungan pada logika bisnis. Dalam pendekatan 2, Anda hanya mengambil data yang diperlukan untuk tampilan, tetapi Anda menduplikasi kode di sekitar model.