【发布时间】:2011-01-23 09:40:43
【问题描述】:
全部,
我是将设计思维应用于日常问题的过程。在这个过程中,我需要一些帮助。假设像赫兹这样的汽车租赁公司需要一个应用程序以及常规数据,他们需要能够根据特定标准为客户提供优惠。
标准是
- 所有列出的假期(非周末) - 租金可享受 10% 的折扣
- 仅劳动节就可享受 15% 的租金折扣
- 如果列出的假期超过 3 天 - 可享受 20% 的折扣
- 如果在劳动节服用 >3 天 - 优惠 25%
- 等等——还会有更多
现在我可以想到装饰器,例如
IVehicleBase
{
Props: Make, Model, HirePrice, HireTimePeriodinDays
}
具体类:
public class FordExplorer : VehicleBase
{
public override string Make
{
get { return "Ford"; }
}
public override string Model
{
get { return "Explorer"; }
}
public override double HirePrice
{
get { return 450; }
}
public override int HireTimePeriodinDays
{
get { return 1; }
}
}
许多其他类别(汽车)也是如此。
现在我该如何装饰特价商品?
我可以想到一个vehicleDecoratorBase,但是如果报价仅针对假期,那很好(为劳动/其他列出的假期做两个具体的实现),但是我们将假期与hireDate结合在一起,这是汽车的域属性。
我希望我在这里说得通。有什么建议吗?
干杯
【问题讨论】:
-
如果您认为这很重要,请考虑将语言的详细信息添加到您的标签中。这将把合适的人带到这里。
-
看起来像 C# - 这是你的实际实现语言,还是只是一个插图?对于前一种情况,我建议添加
c#标签。 -
我会推荐这本关于 DDD 的书,它确实为这种场景提供了说明:domaindrivendesign.org/books/evans_2003domaindrivendesign.org/books/nilsson_2006
-
对不起,我会添加语言标签,是的,它是 C#。 @Pablo - 我的“精致”思维和困惑是在读完这本书之后,我试图验证并确保我的思维模式是正确的。不过感谢您的链接。
标签: c# design-patterns