public interface IRecord
{
}
public class BirthRecord : IRecord
{
public string CityOfBirth;
public Date DateOfBirth;
public BirthRecord(string cityOfBirth, Date dateOfBirth)
{
// assign these to properties
}
}
public class CarRecord : IRecord
{
public Color Color;
public string Manufacturer;
public CarRecord(Color color, string manufacturer)
{
// assign these to properties
}
}
public interface IAccount
{
public List<IRecord> Records { get; set; }
}
public class Client
{
public void ProcessAccount(IAccount account)
{
foreach(IRecord record in account.Records)
{
if(record is CarRecord)
handleCarRecord((CarRecord)record);
else if(record is BirthRecord)
handleBirthRecord((BirthRecord)record);
}
}
}
因此,當你到達客戶端並想要處理值對象時,你必須做各種凌亂的類型檢查和轉換 - 這是一種可接受的模式,還是我正在犯一個更基本的設計錯誤?這似乎違反了OCP,如果不是其他OOD原則。有沒有其他的選擇?使用多態性傳遞值對象是一種不好的做法?
你想做什麼?你能提供一個更大的圖片,所以人們會試圖回答? – DarthVader
更好嗎? – Ford
Baconator,很好。 – Pacane