我在客户端 - 服务器体系结构中使用协议缓冲区作为有线数据格式。域对象(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方法时是否存在性能问题?