我的目的是维护一个系统,该系统考虑三个变量的值来确定将采取哪个操作。
我想重构它以使用设计模式,但找不到适合它需要的设计模式。
为了解释这种情况,我将以健身房系统为例。
每个健身房用户都有一个TYPE_OF_CONTRACT,可能是:
健身房有一些GYM_CLASSES:
每个健身房用户都有一个PHYSICAL_CONDITION
对于这三个特征的每种组合,都应该执行一组任意操作。例如:
如果是 PLATINUM_MEMBERSHIP + PERSONAL_TRAINING + OVER_65:
如果是 GOLD_MEMBERSHIP + 个人培训 + OVER_65:
如果是 SILVER_MEMBERSHIP + PERSONAL_TRAINING + OVER_65:
如果(任何会员资格)+ 步骤 + 医疗条件:
如果 PLATINUM_MEMBERSHIP + WEIGHT_LIFTING + LIMITED_MOBILITY:
等等。
特征的组合可以具有一组动作,这些动作不是排他性的并且并非所有组合都得到保证。
遗留代码使用嵌套开关作为实现。例子:
switch (contractType):
case PLATINUM_MEMBERSHIP:
switch (gymClass):
case (PERSONAL_TRAINING):
switch (physicalCondition):
case (OVER_65): …Run Code Online (Sandbox Code Playgroud)