MVC,其中模型没有内在的视觉表示

时间:2011-07-04 20:09:46

标签: java model-view-controller visualization strategy-pattern

我正在使用MVC架构开发Java应用程序。这样做有很大的解耦和简化我的代码,但问题是模型没有内在的可视化表示。也就是说,没有角色,没有特定的敌人,没有按钮,没有文本框 - 模型由一种类型的对象的数百个实例组成。每个实例都由策略模式的实例控制(从技术上讲,它是策略模式的层次结构);它是应用程序中每个实例之间唯一的不同点。因此,每个实例使用的策略类型应该理想地使它看起来与周围的其他策略略有不同。

我想避免一个巨大的if语句链,其中有几十个“实例”调用检查在为此应用程序开发视图时使用的策略类型。我还想避免使用枚举的类似链。关于如何在不屈服于庞大的if链的情况下如何制作我的观点的任何建议?关于如何正确设计我的视图以便它不会与策略实例紧密耦合的任何建议?

提前感谢您的时间!

1 个答案:

答案 0 :(得分:2)

@DJClayworth提出了一个关键问题:

  

您是否有兴趣向用户介绍[选择]策略或该策略的结果?

假设您需要两者,请让模型包含与策略名称,实现和描述性文本相关的枚举。实现可以使用class literal as a runtime-type token

在此example中,enum Rule将所有三个目的用作隐式模型。它提供了清晰的名称和描述,以及代表特定复合策略的常量。不需要case条款。