我已经多次集成了一个可变持久性概念:
// Standard initialiation
boolean save = true;
Map<String, Object> dataHolder;
// variables to persist
int number = 10;
String text = "I'm saved";
// Use the variables in various ways in the project
void useVariables() { ... number ... text ...}
// Function to save the variables into a datastructure and for example write them to a file
public Map<String, Object> getVariables()
{
Map<String, Object> data = new LinkedHashMap<String, Object>();
persist(data);
return(data);
}
// Function to load the variables from the datastructure
public void setVariables(Map<String, Object> data)
{
persist(data);
}
void persist(Map<String, Object> data)
{
// If the given datastructure is empty, it means data should be saved
save = (data.isEmpty());
dataHolder = data;
number = handleVariable("theNumber", number);
text = handleVariable("theText", text);
...
}
private Object handleVariable(String name, Object value)
{
// If currently saving
if(save)
dataHolder.put(name, value); // Just add to the datastructure
else // If currently writing
return(dataHolder.get(name)); // Read and return from the datastruct
return(value); // Return the given variable (no change)
}
这个原则的主要好处是你只有一个脚本,你必须提到你在开发过程中添加的新变量,它是每个变量一个简单的行。 当然,您可以将handleVariable()函数移动到另一个类,该类还包含“save”和“dataHolder”变量,因此它们不会出现在主应用程序中。 此外,您可以通过保存包含此信息的自定义类以及变量而不是对象本身来为将数据结构保存到文件或类似文件所需的每个变量传递元信息等。
通过跟踪顺序(在第一次运行persist()函数时在另一个数据结构中)并使用基于数组的“dataHolder”而不是基于搜索的映射(&gt;使用),可以提高性能索引而不是名称字符串。)
然而,这是第一次,我必须记录这一点,所以我想知道这个函数重用原则是否有一个名称。 有人认出这个想法吗?
非常感谢!