我正在构建一个相对简单的算法,根据几个标准对专辑进行评分 - 例如,收听计数,音频质量,星级评论,专辑插图的存在等等。我正在尝试确定最佳设计模式这个算法会是,我会喜欢输入。现在,我觉得Builder最能解决这个问题。
以下是一些更多细节:
Builder模式似乎最适用于此,因为它允许用户构建自己的算法,同时避免伸缩。思考?是否还有其他模式,我应该考虑使用Builder?
答案 0 :(得分:0)
假设各种标准所需的所有数据都包含在专辑数据中,并且每个标准都有助于总体得分,我建议将每个标准转换为将相册转换为分数的Java函数。然后,对于所有选定的条件,运行相册上的条件功能,并将各个结果合并为一个分数。然后,您可以将标准转换为枚举,这样可以轻松地将所选标准传递到您的评分函数中
如果每个标准不相等,您还可以使用分数返回权重因子(例如,星级评论可能是监听计数的两倍),使得给定标准的贡献是(分数*重量)/总和权重
答案 1 :(得分:0)
这里有两个设计问题:构建记分员和应用记分员。这些问题是几种设计模式的机会。
构建器可能是第一个问题的合适解决方案,具体取决于记分员本身的复杂程度。第二个问题是Strategy pattern的明确用例(来自@ V3V的答案也在描述)。每个“得分手”都是算法;策略模式是可替代算法的设计。可以使用Template method来实现算法的基线标准。