我使用协议缓冲器作为在客户端 - 服务器体系结构的线的数据格式。 域对象(的Java bean)将通过以下的生命周期。
- 用于客户端业务逻辑
- 转换为protobuf的格式
- 发送到服务器
- 转换回域对象
- 用于服务器端业务逻辑
“协议缓冲器和OO设计”的Protobuf文档中部分建议内合适的领域模型包装生成的类。
我想找到出最好的appoach。
对于如我有一个简单的协议定义。
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方法时,特别是当原定义是复杂的,嵌套的任何性能问题?