我尝试做的事情可以用一些代码更好地解释:
这里我有两个类(更准确地说是数据集中的DataTables,但我更倾向于将其描述为类符号):
class A {
public aType varA;
public bType varB;
public cType varC;
}
class B {
public aType varA;
public bType varB;
public cType varC;
public dType varD;
}
这些表由名为 varSelect 的变量定义:
A varnameA = (varSelect == 1) ? ABuilder() : null;
B varnameB = (varSelect == 2) ? BBuilder() : null;
在代码中我必须使用类似的东西:
if((varSelect == 1 && varnameA.varA == true) ||
(varSelect == 2 && varnameB.varA == true)
{
...
}
如你所见,它做同样的事情,但它们有一些不同的属性,但我大多使用相同的类成员进行检查。我怎么能设计这样的东西?
注意:认为B是A类的较新版本。但是有些代码必须继续使用A作为其数据源。
答案 0 :(得分:0)
封装和继承可以帮助解决这个问题。
class Data {
// Common properties
public aType varA;
public bType varB;
public cType varC;
}
class A extends Data {
// other properties
}
class B extends Data {
public dType varD;
// other properties
}
class DataTable {
Data data;
public DataTable(int selector) {
if (selector == 1) {
// data will contain table A
} else if (selector == 2) {
// data will contain table B
}
}
public boolean isVarA() {
return data.varA;
}
}
因此,当我们需要检查varA时,我们不再需要记住选择了哪个数据表。
DataTable dataTable = new DataTable(1); // varSelect = 1
//...
//...
//...
if (dataTable.isVarA() == true) {
// do something
}