Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 对应用设计模式感到困惑吗_Oop_Design Patterns_Uml_Modular Design - Fatal编程技术网

Oop 对应用设计模式感到困惑吗

Oop 对应用设计模式感到困惑吗,oop,design-patterns,uml,modular-design,Oop,Design Patterns,Uml,Modular Design,作为办公项目的一部分,我正在为机场设计一个系统,我应该设计一个处理乘客的类。我使用的是WPF MVVM,因此我有了我的PassengerInfoViewModel,它基本上代表了前往机场的乘客。我对使用State、Visitor和Decorator模式感到困惑 要求: 有几种类型的乘客。乘客可以是具有SSN+验证生物特征的***,未经验证生物特征的SSN+登记,未经验证生物特征的SSN+登记,未经验证生物特征的SSN+登记,以及与其他实体的其他组合 上述任何乘客都可能具有以下状态之一。新登记、等

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

要求:

  • 有几种类型的乘客。乘客可以是具有SSN+验证生物特征的***,未经验证生物特征的SSN+登记,未经验证生物特征的SSN+登记,未经验证生物特征的SSN+登记,以及与其他实体的其他组合

  • 上述任何乘客都可能具有以下状态之一。新登记、等待验证、验证、拒绝、取消登机、取消等。根据机场工作人员执行的某些操作更新乘客的状态。但这不会在单个事务期间更新。下次乘客输入预订参考号时,将提取更新的状态

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

  • 我计划做的是:

  • 创建一个基础抽象乘客类,该类包含所有乘客共有的基本人口统计信息和其他详细信息。PassengerWithSSN和PassengerWithoutSSN可以是一个单独的类,具有VerificatonStatus字段Verified、Enrolled PendingVerification等。这将在初始事务开始时获取

    这是对的还是我应该为每种类型创建单独的类(我想是的)。每种类型的原因都会触发不同的工作流。由于状态在事务期间不会改变,所以我不使用状态模式

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

  • 对于NewEnrollment、WaitingForVerification等,这将被放入PaxStatus中,我计划使用Visitor模式来处理这方面的逻辑,将其排除在主类之外。不确定这是否是正确的方法

  • SpecialStatance在事务期间会发生变化,所以我计划在这里使用状态设计模式。SpecialAsistance状态和NormalPassengerState也可能存在婴儿状态,以防家长希望为婴儿注册工作流

  • 存在N*N组合(例如,登记了生物特征的未经验证的乘客,SSN与婴儿一起旅行,需要特殊帮助),如果设计不当,可能会导致未来需要大量返工


    有人能给我指引正确的方向吗?

    到目前为止你都尝试了什么?请与我们共享您的代码,可能需要将其移动到。