我正在根据大学 OOP 类(class)的规范构建航类预订系统。该系统必须用C#编写。我想知道解决以下问题的最佳方法是什么
The company currently operates a discount scheme. Western Isles residents get a 10% discount. Scotia also records the island of residence of these passengers for marketing purposes. Business travellers get a 25% discount and must supply their company name. Ordinary passengers do not normally receive a discount unless it is part of a current promotion, in which case they receive a 5% discount.
我是否应该有一个 passenger 类,每个不同类型的客户都从中继承?对此的任何帮助将不胜感激
最佳答案
在我看来,您不想继承 Passenger。继承意味着对象以某种方式发生变化,但乘客无论获得什么折扣,他仍然是乘客。换句话说,他的功能不会因为获得更大的折扣而改变。
您使用的这个示例与通常为 Decorator
模式给出的示例非常接近,尽管这通常是因为它表明可以将多个折扣应用于被装饰的对象(您的 Passenger案件)。查看 wiki 上的咖啡示例 here
另一种可能性是 Strategy
模式,这为您提供了一个干净的界面来为乘客创建机票,同时在内部它根据乘客的类型切换 DiscountStrategy
请求一张票。
关于c# - 条件预订系统的最佳设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15381144/