我在客戶端 - 服務器體系結構中使用協議緩衝區作爲有線數據格式。域對象(java bean)將經歷以下生命週期。協議緩衝區和OO設計
- ,用於客戶端業務邏輯
- 轉換爲protobuf的格式
- 傳輸到服務器
- 轉換回用於服務器端業務邏輯域對象
"Protocol Buffers and O-O Design" ProtoBuf文檔中的部分建議將生成的類包裝在適當的域模型中。
我想找出最好的選擇。
例如,我有一個簡單的原型定義。
package customer;
option java_package = "com.example";
option java_outer_classname = "CustomerProtos";
message Customer {
required string name = 1;
optional string address = 2;
}
這就是域模型的定義方式。如您所見,數據完全存儲在原始生成器對象中。
package com.example;
public class CustomerModel
{
private CustomerProtos.Customer.Builder builder = CustomerProtos.Customer.newBuilder();
public String getName()
{
return builder.getName();
}
public void setName(String name)
{
builder.setName(name);
}
public String getAddress()
{
return builder.getAddress();
}
public void setAddress(String address)
{
builder.setAddress(address);
}
public byte[] serialize()
{
return builder.build().toByteArray();
}
}
這是一個很好的做法嗎?因爲這些對象用於生命週期的所有階段,但我們只需要在客戶端 - 服務器傳輸階段使用protocolbuf格式。
當原型定義非常複雜且嵌套時,在訪問原型構建器類getter/setter方法時是否存在性能問題?