2017-06-02 28 views
1

假設我有接受的形式的字符串的協議:語用的方式來存儲的字符串格式

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

回答

1

我找到了建立消息格式的實用方法。在這種情況下,最好使用構建器類來即時構建消息。 MESSAGE_FORMAT存儲在構建器中。

我所做的是創建一個MessageBuilder類,該類有緩慢填寫所需數據的方法。對於那些不熟悉的人,這是builder設計模式。

例如:

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

message >> "12T12T1234567890"