เมื่อใช้ออบเจ็กต์ธุรกิจที่ใช้ซ้ำได้สิ่งที่ควรคำนึงถึงเป็นแนวปฏิบัติที่ดีที่สุดเมื่อสร้างมุมมองแบบจำลอง
เราใช้วัตถุที่เราเรียกใช้Builder
เพื่อสร้างแบบจำลองมุมมองของเรา ตัวสร้างหนึ่งสำหรับแต่ละหน่วยของมุมมองแบบลอจิคัล (คำสั่งผู้ใช้ ฯลฯ ) ซึ่งแต่ละหน่วยสามารถมีรูปแบบมุมมองที่แตกต่างกันจำนวนหนึ่ง (คำสั่งซื้อประกอบด้วยข้อมูลสรุปบรรทัดคำสั่งและอื่น ๆ )
ผู้สร้างอาจดึงข้อมูลผ่านวัตถุทางธุรกิจมาตรฐานหนึ่งรายการขึ้นไปเพื่อสร้างแบบจำลองมุมมอง
อะไรคือการปฏิบัติที่ดีขึ้นเมื่อพูดถึงการใช้อ็อบเจกต์ธุรกิจ / โมเดลในโมเดลที่มีมุมมอง?
วิธีที่ 1
อนุญาตให้ใช้วัตถุธุรกิจในโมเดลมุมมองหรือไม่
//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
}
วิธีที่ 2
รับข้อมูลที่จำเป็นจากวัตถุทางธุรกิจเท่านั้น
//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
}
ฉันเห็นประโยชน์และข้อเสียของทั้งสองอย่าง แต่ฉันสงสัยว่ามีวิธีการที่ยอมรับหรือไม่ ในวิธีที่ 1 ไม่มีการทำซ้ำของรหัสรอบ ๆ แบบจำลอง แต่มันสร้างการพึ่งพาตรรกะทางธุรกิจ ในวิธีที่ 2 คุณใช้เฉพาะข้อมูลที่จำเป็นสำหรับมุมมอง แต่คุณทำซ้ำรหัสรอบ ๆ รุ่น