Java - 将数据输入与数据输出相关联?

时间:2013-02-11 22:12:47

标签: java design-patterns polymorphism

我正在寻找有关具有此功能的系统的基本设计的建议。

假设我有一个这样的数据类:

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.

在每种情况下,标题在同一组中彼此互斥,并且集合中的哪个标题适用于该数据基于某些硬编码的业务逻辑。

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

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

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

1 个答案:

答案 0 :(得分: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;