c# - 条件预订系统的最佳设计模式

标签 c# oop design-patterns

我正在根据大学 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/

相关文章:

c# - 我如何从 asp.net web 应用程序中选择文件夹或文件?

java - 为什么我们不能在Java中实例化一个抽象类?

java - AbstractClass.getInstance() 方法是一种反模式吗

java - 使用比较器对列表列表进行排序

python - 我可以(/是否有意义)创建一个 pandas 数据框来保存自定义类实例?

c# - 报告解决方案中的设计模式

php - Laravel 使用外墙有什么缺点吗?

c# - C#中处理数据库相关类时 `using`语句的用法最佳实践?

c# - 如何添加到数组 C# 的末尾?

C# > 输入 =""时将字符串转换为 double