小编Qua*_*cem的帖子

用于处理复杂条件评估的设计模式

我的目的是维护一个系统,该系统考虑三个变量的值来确定将采取哪个操作。

我想重构它以使用设计模式,但找不到适合它需要的设计模式。

为了解释这种情况,我将以健身房系统为例。

每个健身房用户都有一个TYPE_OF_CONTRACT,可能是:

  • PLATINUM_会员资格
  • 金卡会员
  • 银级会员

健身房有一些GYM_CLASSES

  • 举重
  • 身体平衡
  • 纺纱
  • 尊巴舞
  • 个人培训

每个健身房用户都有一个PHYSICAL_CONDITION

  • 无限制
  • OVER_65
  • LIMITED_MOBILITY
  • 医疗条件
  • 下面_18

对于这三个特征的每种组合,都应该执行一组任意操作。例如:

如果是 PLATINUM_MEMBERSHIP + PERSONAL_TRAINING + OVER_65:

  1. 需要医疗批准
  2. 签署表格

如果是 GOLD_MEMBERSHIP + 个人培训 + OVER_65:

  1. 需要医疗批准
  2. 签署表格
  3. 额外月费

如果是 SILVER_MEMBERSHIP + PERSONAL_TRAINING + OVER_65:

  1. 拒绝订阅

如果(任何会员资格)+ 步骤 + 医疗条件:

  1. 需要医疗批准
  2. 签署表格

如果 PLATINUM_MEMBERSHIP + WEIGHT_LIFTING + LIMITED_MOBILITY:

  1. 需要医疗批准
  2. 签署表格
  3. 专职工作人员协助

等等。

特征的组合可以具有一组动作,这些动作不是排他性的并且并非所有组合都得到保证。

遗留代码使用嵌套开关作为实现。例子:

switch (contractType):

    case PLATINUM_MEMBERSHIP:

        switch (gymClass):            

            case (PERSONAL_TRAINING):

                switch (physicalCondition):            

                    case (OVER_65): …
Run Code Online (Sandbox Code Playgroud)

java refactoring design-patterns conditional-statements

5
推荐指数
1
解决办法
3091
查看次数