ให้บอกว่าฉันมีCar
คลาส:
public class Car
{
public string Engine { get; set; }
public string Seat { get; set; }
public string Tires { get; set; }
}
ให้บอกว่าเรากำลังสร้างระบบเกี่ยวกับที่จอดรถฉันจะใช้Car
คลาสจำนวนมากดังนั้นเราจึงสร้างCarCollection
คลาสมันอาจมีวิธีการโฆษณาสองสามอย่างเช่นFindCarByModel
:
public class CarCollection
{
public List<Car> Cars { get; set; }
public Car FindCarByModel(string model)
{
// code here
return new Car();
}
}
ถ้าฉันกำลังเรียนParkingLot
การฝึกที่ดีที่สุดคืออะไร?
ตัวเลือกที่ 1:
public class ParkingLot
{
public List<Car> Cars { get; set; }
//some other properties
}
ตัวเลือก # 2:
public class ParkingLot
{
public CarCollection Cars { get; set; }
//some other properties
}
มันเป็นแนวปฏิบัติที่ดีในการสร้างสิ่งClassCollection
อื่นClass
หรือไม่?
public class CarCollection
ไม่ได้ใช้ IList หรือ ICollection เป็นต้น ... ดังนั้นคุณไม่สามารถส่งผ่านไปยังสิ่งที่ใช้ได้กับรายการ มันอ้างว่าเป็นส่วนหนึ่งของชื่อว่าเป็นคอลเลกชัน แต่ไม่ได้ใช้วิธีการใด ๆ
CarColection
มีTotalTradeValue
คุณสมบัติกับมัน DDD ไม่ใช่วิธีเดียวในการออกแบบระบบเพียงชี้ให้เห็นว่าเป็นตัวเลือก
CarCollection
สิ่งList<Car>
รอบตัว? โดยเฉพาะอย่างยิ่งเมื่อ CarCollection ไม่ขยายคลาสของรายการสำรองหรือแม้แต่ใช้อินเทอร์เฟซการรวบรวม (ฉันแน่ใจว่า C # มีสิ่งที่คล้ายกัน)