我正处于金融行业的OOP项目的中途,我正在回顾我的设计决策。我已经用模式解决了一些问题,我为这些问题感到特别自豪,但在其他地方我似乎缺乏一点严谨性。我自己的用例非常高,因为用户完成的实际输入甚至与在引擎盖下完成的计算的复杂性无法比较。为了给你一个想法,我必须集成第三方数学解算器和整个解析器,以允许用户输入他自己的公式。
碰巧我有二十几个类,所有类都以同样的方式调用:计算器 - 无论
我最初的问题是我没有明确且不同的域对象可供使用(例如,解析模块除外)。从对象的角度来看,我有很多困难 - 从程序上编写程序要容易得多,因为基本上我们只是用金钱或百分比来达到新的金额和......百分比。我想不出计算器以外的任何其他实体......计算各种重量或数量。一切似乎都是涉及$$
的巨大算法我的问题是,当在域模型或用例中无法自然找到对象时,如何在对象中思考?
答案 0 :(得分:0)
我总是发现最自然的方法是尝试理解你可以用什么方式来概括像(或类似的)对象。在某种程度上,你通过制作特殊情况完成了艰苦的工作,现在你只需要寻找相似之处。
例如,您的所有计算器类都以何种方式相似(除了名称)?它们是否同样初始化?他们都有“calculateTax”方法吗?他们都共享一组较低级别的计算吗?如果您可以抽象计算结构,那么多个类将自然地建模为这些的特殊情况。
答案 1 :(得分:0)
您可以将计算器本身视为域模型中的抽象实体。接下来应用策略设计模式来处理各种计算算法。 一旦CalculatorStrategy到位,你可以使用其他模式,如装饰器,构建器来获得你想要的东西。