2013-02-11 45 views
1

我在寻找关于具有此功能的系统的基本设计的建议。Java - 将数据输入与数据输出相关联?

比方说,我有一个数据类是这样的:

Class nodeData 
boolean aValue; 
boolean bValue; 
boolean cValue; 

使用一些集商业逻辑的,我定义互斥组标题到这个数据代表的节点。

例如,我定义该标题:

Singular.YES means Only one of aValue, bValue, cValue is true 
Singular.NO means 0 or more than 1 of aValue, bValue, cValue is true 

或这一个:

aDefined.YES means aValue is true. 
aDefined.NO means aValue is false. 

或这一个:

totalTrue:.0 means 0 of the values are true 
totalTrue.1 means 1 of the values are true 
etc. 

在每种这些情况下,标题是在同一组中彼此相互排斥,并且一组内的哪个标题适用于该数据是基于一些硬编码的b使用逻辑。

然后,每个特定的标题都与一些特定的功能相关联。例如,我可能会说“如果aDefined.YES,调用methodX”或“如果totalTrue.0,则调用methodX然后methodY”。

如果N是标题集的数量,则有N!标题的组合,和N!相关功能的组合。我该如何实现:对于每个节点数据,找到与该数据关联的一组标题。运行与每个标题相关的功能。

编辑:这不是一个布尔逻辑问题,这是一个设计问题。我的观点是,我想要一个强大的方法,将数据集与某些名称或子类关联起来,并赋予任意业务逻辑。

+0

这是一个功课题吗? – Olaf 2013-02-11 22:23:00

+0

@Olaf不,这是一个工作问题。 – Jeremy 2013-02-11 22:52:32

回答

1

跳过价值部分
我认为这应该可以帮到你,但你的问题有点含糊。

//checking if one of the 3 bools are true 
if((a&&!b&&!c)||(!a&&b&&!c)||(!a&&!b&&c)) 
    Singular = Singular.YES 
else 
    Singular = Singular.NO 

//checking if one bool is true 
if(a) 
    aDefined = aDefined.YES 
else 
    aDefined = aDefined.NO 

//checking how many bools are true 
int i = 0; 
if(a) 
    i++; 
if(b) 
    i++; 
if(c) 
    i++; 
TotalTrue = i; 
+0

我想我不清楚。定义个人逻辑并不难。我的观点是,我想要一个强大的方法,将数据集与某些名称或子类关联起来,并赋予任意业务逻辑。 – Jeremy 2013-02-11 22:53:31