首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Protobuf只读数据种设计原理

2012-10-30 
Protobuf只读数据类设计原理protobuf使用protoc生成的java类, 这个类一旦创建了对象,该对象就是只读的,不

Protobuf只读数据类设计原理
    protobuf使用protoc生成的java类, 这个类一旦创建了对象,该对象就是只读的,不能修改它的任何属性,也就是说这个类是只读类。protobuf使用builder来构建对象,构建过程中为设置对象属性值,设置完后,builder本次任务已经完结了。


据下面的例子来说明一下:


用户类:

public class user {    private string username;    private int age;    public boolean hasusername(){      ...    }    public boolean hasage(){...   }   public string getusername(){     return username  }    public int getage(){  return age;}     public static builder newbuilder() {    return new builder();  }}

静态内部类,使用user内部类来修改user的字段,而外部其他类没权限直接修改user的字段:

public static class user.builder {    private string _username;    private int _age;   public string getusername(){     return _username  }    public int getage(){  return _age;}   public user.builder setusername(string username){this._username = username;return this;  }    public user.builder setage(int age){  this._age = age;return this;}public user build() {    user user = new user();    user.username = this._username;    user.age = this._age;         //清除所有字段    this._username = null;    this._age = 0;return user;}}

使用这两个类:

user.builder builder = user.newbuilder();builder.setusername(“谢明媚").setage(24);user user = builder.build();builder.setusername("谢铭");system.out.println(user.getusername());




输出结果为:

谢明媚


 

热点排行