2

我有以下场景(这适合更大的 mvc 框架)

有一个大型 xml 配置,它定义了可用于系统特定功能的模型类型:

<object_type1_config>
    <type_id>1</type_id>
    <type_model>amazinTypeModel</type_model>
    <config_value1>blah</config_value1>
    <config_value2>blah blah</config_value2>
</object_type1_config>

在控制器中,基于某些请求参数,我可以决定在运行时使用哪个模型并确定要渲染哪个模板等。

另一个复杂性是,如果该模型类型的配置中不存在某些值,则可以使用一组默认值。这组默认值将在所有可能的对象类型中用作默认值。

问题是控制器充满了用于解析此配置值以获取参数然后根据这些参数做出决策的逻辑。

所以将它移到另一个类是有意义的,但是在这里使用的最佳设计模式是什么,因为控制器实际上仍然必须解析配置才能首先获取模型类型。然后它必须实例化模型类型并查询它的值。

我在这里看不到任何解耦的方法

4

1 回答 1

0

你可以做这样的事情

class Controller {
    Parser parser;

    Model getModel() {
        return parser.parseModel(userInput);
    }

    Template getTemplate() {
        return parser.parseTemplate(userInput);
    }
}

依此类推,解析器已经引用了默认配置值(在解析器中硬编码,例如作为属性文件名,或传递给其构造函数)。您可以通过构造函数/设置器设置解析器,或者如果您使用的是 Spring,您可以自动装配它。

于 2013-04-24T16:07:39.187 回答