关注点分离 - 如何使用此代码实现

时间:2013-04-24 16:00:38

标签: java design-patterns decoupling

我有以下场景(这适用于更大的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>

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

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

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

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

我无法在这里找到任何解耦方法

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

class Controller {
    Parser parser;

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

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

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