0

我正在为机场设计一个系统,作为办公项目的一部分,我应该设计一个用于处理乘客的类。我正在使用 WPF MVVM,所以我有我的PassengerInfoViewModel,它基本上代表前往机场的乘客。我对使用 State、Visitor 和 Decorator 模式感到困惑。

要求:

  1. 有几种类型的乘客。乘客可以是具有 SSN + 已验证生物特征的 ***, SSN + 已注册但未经过验证的生物特征, 没有 SSN + 已注册但未经过验证的生物特征, SSN + 已注册但未经过验证的生物特征以及与其他一些实体的其他组合。

  2. 上述任何乘客均可具有以下状态之一。NewEnrollment、WaitingForVerification、Verified、Rejected、Deboarded、Cancelled 等。乘客的状态会根据机场工作人员执行的某些操作进行更新。但这不会在单个事务期间更新。下次乘客输入预订参考号时,将提取更新的状态。

  3. 乘客可以选择触发特殊工作流程的特殊帮助。乘客可以在单次交易中选中/取消选中特殊帮助。因此,这些值在单个事务中不断更新。交易结束后,如果乘客选择了特殊帮助,则不能再次更改。

我打算做的是:

  1. 创建一个基本的抽象乘客类,该类具有所有乘客共有的基本人口统计信息和其他详细信息。PassengerWithSSN 和PassengerWithoutSSN 可以是一个单独的类,具有VerificatonStatus 字段已验证、En​​rolledPendingVerification 等。这将在初始事务开始时获取。

    这是正确的还是我应该为每种类型制作单独的类(我这么认为)。原因是每种类型都会触发不同的工作流程。由于状态在事务期间不会改变,因此我不会使用状态模式。

    此外,将来我应该能够为每种类型插入不同的工作流程。工作流程涉及调用单独的 API 和导航到不同的页面。

  2. 对于 NewEnrollment、WaitingForVerification 等,这将被放入 PaxStatus 中,我计划使用访问者模式来处理此逻辑,使其远离主类。不确定这是否是正确的方法。

  3. SpecialAssistance 在交易过程中会发生变化,所以我计划在这里使用状态设计模式。SpecialAssistance 状态和 NormalPassengerState 如果父母想要为工作流注册婴儿,也可能存在婴儿状态。

有 N*N 种组合(例如,未经验证的乘客已注册生物识别,并且有 SSN 与婴儿一起旅行并需要特殊帮助),如果设计不当,将来可能需要大量返工。

谁能指导我正确的方向?

4

0 回答 0