我正在制作一个小型棋盘游戏程序,它需要将棋盘的状态保存到文件中,然后从文件中读取并重新创建棋盘。
我将此功能委托给下面显示的类。我想实现这一点,以便在 SQUARE_FORMAT 常量中捕获棋盘正方形的保存格式及其坐标,并在 LOAD_REGEX 常量中捕获用于读取相同信息的正则表达式。两者都应该在代码中相互关联,并且能够在视觉上破译(我的意思是一个人应该能够清楚地看到它们与相同的数据相互关联)
在 Java 代码中是否有这样的习惯用法或模式?
public class BoardPersistenceUtility {
private final String SQUARE_SAVE_FORMAT = "";
private fial String LOAD_REGEX = "";
public void save(PrintWriter writer, Board board) {
}
public Board load(BufferedReader reader) {
// Implement
return null;
}
}
更新1:
再次阅读我的问题时,我想这可能有点令人困惑,关于我到底在寻找什么。我正在特别寻找表示 SQUARE_SAVE_FORMAT 的正确方法,以便它与正则表达式 LOAD_REGEX 明确相关。
SQUARE_SAVE_FORMAT 理想情况下是一个使用特殊字符/变量的字符串,这些特殊字符/变量将被实际值替换,结果将保存到文件中。LOAD_REGEX 是将用于从文件中读取内容的相应正则表达式。正则表达式将使用捕获组,因此我可以根据从捕获组获得的值重新创建原始对象。
我的问题是,围绕创建这样的字符串对的习语是什么——其中一个是用于保存数据的格式字符串,另一个是在读取该数据时使用的正则表达式。
更新 2:
再想一想,我想我已经能够更好地澄清我的问题了。
如果您查看这两个字符串,SQUARE_SAVE_FORMAT 是一个格式字符串,将在 String.format() 中用于为板上的正方形创建文本,并将其保存在文件中。常量 SQUARE_LOAD_REGEX 是一个正则表达式,用于读取行并将相关部分捕获到命名组中,因此我可以重新创建原始对象。(对不起,如果我的正则表达式稍微不正确......我很快写了一些东西,但我需要刷新一些正则表达式原则以确保这确实是我需要的)
如果你从视觉上看这两个字符串,很难将它们关联在一起。也许是因为我们没有任何 Java 格式字符串中的命名变量。我们能做的最好的事情是指定 %i ,其中 i 是参数的索引。
我想了解是否有任何成语或模式来表示这样的字符串对,其中一个用于将某些数据格式化为文本,另一个用于读取相同的文本并解析它的部分。
public class BoardPersistenceUtility {
private final String SQUARE_SAVE_FORMAT =
"%d,%d:%b-%s";
private final String SQUARE_LOAD_REGEX =
"^(?<row>\d*),(?<col>\d*):(?<mine>true|false)-(?<status>\w)$";
public void save(PrintWriter writer, Board board) {
}
public Board load(BufferedReader reader) {
// Implement
return null;
}
}