我試圖找出最好的方式來處理以下..裝飾類具有屬性,以避免重複
我需要通過AvailabilityOption/LimitedAvailabilityOption
類型 - 以及一個服務,因爲它發生,然後拿回BookingOption
類型。
我有程序,這將產生可用的類型,但我不確定我是否需要經過我的每一個Option
對象有效複製它們的版本從BookingOption
和AvailabilityOption
反過來繼承。或者我可以使用可用性課程對簡單選項進行某種「裝飾」,然後在我再次將它們傳回時將它們重新下載到預訂。 我知道有一個裝飾模式,但看了一下這個看起來它更多的是在運行時裝飾..我可能是誤解。 我懷疑我還沒有解釋這很好,但這裏是一些代碼..
編輯:有效的選項是爲一些在預訂可能選項的基礎 - 比如郊遊或其他一些額外的,其中有相當多的。可用性擴展到確定任何選項上有多少空間,但它只是擴展了選項本身,其價格和可能的數量已經在該選項上預訂。 BookingOption
需要從例程中返回,該例程根據價格和可用性從選項中進行有效選擇。我只是試圖在預訂點返回最低限度,這實際上是需要選項的日期,以及它是哪個選項。在這一點上的可用性是沒有實際意義..
public abstract class Option{
public int OptionID { get; set; }
public OptionType OptionType { get; set; }
public string EqtCode { get; set; }
public string CentreCode { get; set; }
public virtual string Description { get; set; }
}
public abstract BookingOption : Option{
public DateTime WeekStartDate{get;set;}
}
public abstract class AvailabilityOption : BookingOption {
public decimal Price{get;set;}
public override string Description{
get{return string.format("{0} @ {1}", base.Description, Price.ToString());
set{ base.Description = value;}
}
}
public abstract class LimitedAvailabilityOption : AvailabilityOption{
public int MinNumber { get; set; }
public int MaxNumber { get; set; }
public int TotalBooked { get; set; }
public int TotalRemaining { get; set; }
public override string Description
{
get
{
return string.Format("{0} ({1} @ {2})",
base.Description, TotalRemaining.ToString(), Price.ToString());
}
set { base.Description = value;}
}
}
public class Option1 : Option{
public Option1(){}
}
public class Option2 : Option{
public Option2(){}
}
public List<BookingOption> BookWithAvail(List<AvailabiliyOption> options){
//pick options based on avail and pass back the booking versions so write away...
}
能否請您提供有關「可用性」和「選項」概念,以及關於它們之間的關係本質上多一點信息 - 在你的應用程序的業務邏輯?這似乎是答案取決於這些類和他們背後的概念的目的。 – 2012-07-19 09:33:06
@ Andrii修正..希望進一步解釋 – nat 2012-07-19 09:55:50