【发布时间】:2014-10-27 19:32:06
【问题描述】:
在我看来,我需要设计一个简单的系统,该系统对从用户输入数据的网络表单传递的数据执行一些计算。网络表单本身是一次性的,但后端代码应该继续用于我将很快开始的一个新项目中,该项目处理对它发出并自行找到的数据的这些计算。
我最初认为策略模式非常适合这些后端类,但当我周五开始编写它们时,我真的很震惊,我的 4 个类之间的代码中可能有 95% 的重复。虽然我觉得如果我决定改变公式或数据交互方式,我目前的解决方案会很好地工作,但现在代码重复让我感到不安。
基本是这样的:
我们有 4 个销售程序,每个程序都有 5 个属性,每个程序之间有所不同,但计算我需要知道的内容的公式都是一样的。
目前我有一个带有单个函数calculate 的接口和实现此函数的 4 个类(每个程序一个)。这一切都很好,直到我很快意识到calculate 和我在我的课程中实现的其他功能都 100% 完全一样。我的 4 个文件中唯一不同的是 5 个值。
我最初的设计计划是构建这样我可以从网络表单的下拉列表中键入并传入一个包含我的值的类并执行计算。自从我退后一步,我发现我错过了那个标记,需要重新评估我的结构。
我已经对抽象类甚至装饰器模式进行了一些研究,但似乎没有任何东西可以立即点击。我喜欢构建它的想法,以便将来可以轻松地将其他销售程序引入其中,但我不喜欢要求某人基本上进入我的文件并复制文件并调整顶部的变量,这似乎非常马虎。
简单的解决方案似乎只是编写一个 Calculator 类并根据用户选择的内容传入这些变量的数组。我可能试图对此进行过度设计,但使用简单的解决方案也感觉不对。
【问题讨论】:
-
你看过
Traits吗?
标签: php design-patterns single-responsibility-principle