1
我Order類:如何在客戶需要時添加客戶可見的擴展?
public class Order : IOrder
{
public long Id { get; private set; }
public string Serial { get; private set; }
public long CustomerId { get; set; }
public Order() { }
public IOrderItems GetOrderItems()
{
return new OrderItems(Id);
}
}
,我想補充和延伸下令:的OrderItems,所以我用了擴展對象模式 - 你可以看到訂單有GetOrderItems()。的OrderItems的樣子:
public class OrderItems : IOrderItems
{
public IItem[] Items { get; set; }
public OrderItems(long orderId)
{
Items = Item.GetItems(orderId);
}
}
因爲我寫的web應用程序,我使用的Web服務。 我的問題是,有時我需要檢索訂單數據,而沒有它的項目和時間我需要使用它的項目檢索訂單數據。 檢索Order對象並沒有多大幫助,因爲它不會檢索到客戶端的Items。如果我將GetOrderItems轉換爲屬性 - 我將始終將OrderItems返回給客戶端,而不是我正在尋找的。
另外 - 有時客戶會想打電話給一個web服務,只有順序參數,有時客戶會想調用其他的web服務與訂單和項目作爲參數。
我該如何解決這個問題?
這可以工作,但你覺得什麼:一個可以使用新的Order()初始化訂單;然後可能認爲OrderItems不是空的。你怎麼看? – Naor 2011-04-02 14:27:38
另一個問題 - 如果我有webservice返回所有訂單與他們的項目,在這種情況下,我必須循環所有的訂單,以加載項目? – Naor 2011-04-02 14:31:49
我假設有非常特殊的情況,您的客戶端爲了獲取數據而調用了其中一種方法或其他方法。如果不是,那麼客戶端總是需要檢查OrderItems屬性是否爲空 - 如果調用LoadOrderOnly,它會是什麼。 – 2011-04-02 14:32:17