首页 > 设计一个计算框架,如何较好的分离计算逻辑与参数(数据)列表

设计一个计算框架,如何较好的分离计算逻辑与参数(数据)列表

问题是这样的。

我是做高能物理的,写代码主要是进行计算,处理大量的实验数据。

一般我们有一套计算框架,做为数据分析人员在其下开发。一般方法就是继承一个叫AlgBase的基类,实现几个接口函数,运行程序时框架就会执行你编写的计算逻辑。

现在的问题是,我的分析比较复杂了,这个分析要准备一些参数和数据,分析中使用的方法可能会有变化,所以我就想把分析方法分离封装成tool。我的想法是写一个分析接口,传入实验数据,和一个数据对象用来存储分析结果。具体的某种分析方法实现这个接口,在这个接口函数中做具体的分析计算,将结果存入。然后我的主算法可以去调用不同的分析tool.

但是分析中除了实验数据,还要用到一些其他的实验相关的参数设定。这些参数与分析方法无关,即对不同分析tool来说这些参数是一致的,只与实验相关。那么,我应该在哪里去设定这些参数,怎么传递给分析tool呢。

最直接的想法可能是在主算法类中设定好这些参数,在分析tool的那个函数接口处传入。但是这些参数比较多,而且可能随着不同的考虑加入更多参数进来,遇到这各变化就需要增加主算法中成员变量,还要修改接口,然后还修改具体算法,感觉不大对劲。

稍微强点的想法是将这些参数也封装起来,作为一个对象整体传递给tool接口.这样出现参数变动只需要修改这个参数类以及tool接口中对这个类的对象的调用即可。好像稍微强点了。

想来听听大家的意见,看看有什么好的想法和建议。表达无能,见谅。求讨论。


看看开源的计算框架spark能否解决你的问题


这个问题真心有蛮大,按你所说是想弄个规则引擎,说下个人在项目中实际步骤:
1、UML工具(草稿纸)绘制各类的职责和关系
2、然后再进行代码实现

其中需要使用各种设计模式如模板模式、策略模式、工厂模式等,设计和实现的时候每次都从最简单的开始设计,再迭代(不要一开始就完美,从单一责任原则思考触发)

【热门文章】
【热门文章】