很多功能都做同样的事情 - DRY的优秀设计模式是什么?

时间:2013-05-06 19:37:15

标签: design-patterns configuration dry

我正在寻找重构一段代码,该代码为数据库的存储过程提供编程接口。但是,我发现自己必须创建潜在的数百个功能,这些功能可以通过一些不同的配置来完成同样的工作。

  1. 函数使用的存储过程
  2. 映射到配置对象,为该特定存储过程提供args和验证参数
  3. 举个例子:

    getCountries = function(params){
       var options = { statement : 'proc_1'}
       return run_request(options, params, mappings.select.countries)
    }
    
    getStates = function(params){
       var options = { statement : 'proc_2'}
       return run_request(options, params, mappings.select.states)
    }
    

    当然,当有很多这样的情况时,这并不会感觉非常干燥并且会出现问题。

    我很好奇我可以处理这种情况的不同方式,以及“最佳实践”是什么。

    我想过有一个大配置和一个导演功能,给定字符串参数将获得正确的存储过程及其配置。例如:

    get('countries', params)
    

    但我不确定这一点,因为在某些情况下字符串似乎有点武断。

    我想到的另一件事是还有一个巨大的配置,它只是在运行时自动生成函数。这似乎更为可取,但我仍然坚持使用一个非常大的文件,可能会很难维护,尽管它似乎比我目前的实现更好地遵循DRY。

    思考?我应该看一下特定的设计模式吗?

1 个答案:

答案 0 :(得分:1)

不要将形式与功能混淆。

您有两个具有相同“形状”的代码示例,但它们执行不同的功能。没关系。 DRY多次没有做同样的功能(并且,不可避免地,多种方式)。