语用的方式来存储的字符串格式

问题描述:

假设我有接受的形式的字符串的协议:语用的方式来存储的字符串格式

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 - 或任何长度的任何字符串。

+0

“我能想到的唯一的事情是抽象的PROTOCOL_FORMAT出自己的类。”它会让你烦恼吗?提供可以提供构建字符串的方法的特定类似乎是个好主意。在你的情况(很多部分来看),流畅的API似乎也是合适的。 – davidxxx

+0

这并不一定会让我烦恼,我只是对看到其他人是否以不同的方式处理类似情况感兴趣。 – Kris

+0

我明白你的观点。你可以用多种方式实现它,但你最终有两种主要的方式来实现它:为你的需求引入抽象(有很多方法可以做到)或者不引入它(用更少的方法去做) – davidxxx

我找到了建立消息格式的实用方法。在这种情况下,最好使用构建器类来即时构建消息。 MESSAGE_FORMAT存储在构建器中。

我所做的是创建一个MessageBuilder类,该类有缓慢填写所需数据的方法。对于那些不熟悉的人,这是builder设计模式。

例如:

String message = MessageBuilder() 
    .displayValue(123) 
    .lightColorOne(RED) 
    .lightColorTwo(GREEN) 
    .lightColorThree(BLUE) 
    .build(); 

message >> "12T12T1234567890"