我正在尝试找出解决以下问题的最佳方法..
我需要将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...
}
答案 0 :(得分:0)
看起来答案取决于您计划如何使用可用性和有限可用性的本质特征。如果这些可用性 - 等式仅适用于LimitedAvailabilityOption
和AvailabilityOption
类,那么似乎并不需要实现Availability
或{{1在单独的类中,因为每个类将仅用于区分一种其他本质(分别为LimitedAvailability
和LimitedAvailabilityOption
)。只有当您计划将每个类分配给多个与继承关系无关的本质时,才有意义使用装饰模式并实现可用性和有限可用性质量的类(包括通过中间类继承)。如果您打算通过具有可用性属性的共同祖先跨多个类传播 availability -qualities的使用,那么这是唯一的选择将这些可用性质量提取到单独的类中。