语用的方式来存储的字符串格式
问题描述:
假设我有接受的形式的字符串的协议:语用的方式来存储的字符串格式
static final String PROTOCOL_FORMAT = "%s%sT%s%sT%s%s%s%s%s%s%s%s%s%s";
在这里,每%s
是指某些数据块必须在为了完成消息代入格式。
就我个人而言,我发现存储格式在这种字符串替换很难阅读。有没有任何标准的方法来处理这样的事情?我怎么能让这更具表现力?我能想到的唯一的事情就是将PROTOCOL_FORMAT
抽象出来。
编辑(使用示例):
String.format("%s%sT%s%sT%s%s%s%s%s%s%s%s%s%s",
data1,data2,data3...);
在这里,每每段数据{N}可能包含来自每一个其他片不同的信息。
Output:12T12T1234567890
然而,去年0
很容易被99999999
- 或任何长度的任何字符串。
答
我找到了建立消息格式的实用方法。在这种情况下,最好使用构建器类来即时构建消息。 MESSAGE_FORMAT
存储在构建器中。
我所做的是创建一个MessageBuilder
类,该类有缓慢填写所需数据的方法。对于那些不熟悉的人,这是builder
设计模式。
例如:
String message = MessageBuilder()
.displayValue(123)
.lightColorOne(RED)
.lightColorTwo(GREEN)
.lightColorThree(BLUE)
.build();
message >> "12T12T1234567890"
“我能想到的唯一的事情是抽象的PROTOCOL_FORMAT出自己的类。”它会让你烦恼吗?提供可以提供构建字符串的方法的特定类似乎是个好主意。在你的情况(很多部分来看),流畅的API似乎也是合适的。 – davidxxx
这并不一定会让我烦恼,我只是对看到其他人是否以不同的方式处理类似情况感兴趣。 – Kris
我明白你的观点。你可以用多种方式实现它,但你最终有两种主要的方式来实现它:为你的需求引入抽象(有很多方法可以做到)或者不引入它(用更少的方法去做) – davidxxx