我正在设计一个系统,它在标准的行/列类型输出中组装不同的数据。
每列可以:
系统:
我当前的实现计划是每列设计两个类(或实现两个接口的一个类列)。接口将:
这个想法是表构造函数将接收有关当前排序列和页面的信息。然后,将返回该表的适当键列表。此信息将用于创建域对象行的列表,然后将其依次传递给每个列“装饰”实现,以便可以依次添加每个列信息。
我想我的问题是 - 建议使用哪种设计模式 - 或者人们使用其他设计决策来组装具有公共密钥和变量列的不同数据。
答案 0 :(得分:0)
我不确定我是否完全理解你要做的事情,但从我收集到的内容来看,你想要以一种允许你从中制作结构化表格的方式存储任意数据行它稍后。在这种情况下我会做什么(假设你正在使用Java)是一个非常简单的Column
接口,它只有一个"值"属性:
public interface Column {
String value;
}
然后,您可以通过实施Column
来创建列:
public class Key implements Column {
String value = new String();
public Key(String keyValue){
this.value = keyValue;
}
}
那么你可以创建一个名为DataRow
的类(或任何你喜欢的),其对象将包含实际数据。例如,您可以在该类中使用一个允许您添加数据的方法:
public class DataRow {
List<Column> data = new ArrayList<Column>();
public DataRow(String key){
this.setColumn(new Key(key));
}
public void setColumn(Column columnData) {
this.data.add(columnData);
}
public Column getColumn(Class column){
for(Column c : this.data){
if(c.getClass().equals(column)){
return c;
}
}
return null;
}
}
如您所见,您可以通过为方法setColumn()
提供一个新的Column
对象来调用它。这将允许您将任何类型的任何数据添加到DataRow
对象。然后,要创建一些表,您可以使用一个函数,该函数需要List
DataRows
和List
个类,然后只返回包含该行数据的对象指定:
public List<DataRow> createTable(List<DataRow> data, List<Class<? extends Column>> columns){
List<DataRow> table = new ArrayList<DataRow>();
for(DataRow row : data){
DataRow ret = new DataRow(row.getColumn(Key.class).value);
for(Class column : columns){
if(row.getColumn(column.getClass()) != null )ret.setColumn(row.getColumn(column.getClass()));
}
table.add(ret);
}
return table;
}
这将允许您创建&#34;使用您的数据的表格以及您希望包含在表格中的列。
请注意,我写这段代码是为了传达一个想法,而且此刻它非常混乱。但我希望这会以某种小的方式帮助你。