我正在使用 MVC 架构开发 Java 应用程序。这样做极大地解耦并简化了我的代码,但问题是模型没有内在的视觉表示。也就是说,没有角色,没有特定的敌人,没有按钮,没有文本框 - 该模型由一种类型的对象的数百个实例组成。每个实例都由策略模式的实例控制(从技术上讲,它是策略模式的层次结构);这是应用程序中每个实例之间的唯一不同点。因此,理想情况下,每个实例使用的策略类型应该使其看起来与周围的其他实例略有不同。
我希望避免出现巨大的 if 语句链,其中包含数十个“实例”调用,用于检查为此应用程序开发 View 时使用的策略类型。我还想避免使用枚举的类似链。关于如何在不屈服于巨大的 if 链的情况下发表自己的观点,有什么建议吗?关于如何正确设计 View 以便它不会与策略实例紧密耦合有什么建议吗?
预先感谢您的宝贵时间!
最佳答案
@DJClayworth 提出了关键问题:
Are you interested in presenting to the user the strategy [to be] selected, or the results of that strategy?
假设您需要两者,让模型包含与策略名称、实现和描述性文本相关的枚举。该实现可以使用 class literal as a runtime-type token .
在此example ,enum Rule
作为隐式模型满足所有三个目的。它提供了清晰的名称和描述,以及代表特定复合策略的常量。不需要 case
语句。
关于java - MVC,其中模型没有内在的视觉表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575681/