`
xiemingmei
  • 浏览: 210518 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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());




输出结果为:

谢明媚


分享到:
评论

相关推荐

    Protobuf生成java类

    Protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,它允许开发者定义数据结构,然后将这些数据高效地序列化和反序列化为网络传输的二进制格式或者存储到文件中。在Java开发中,Protobuf常用于构建可...

    类似protobuf的自定义数据结构

    标题中的“类似protobuf的自定义数据结构”指的是Google开源的Protocol Buffers(protobuf)技术,它是一种高效的数据序列化协议,常用于结构化数据的存储和通信。protobuf提供了一种方式来定义数据结构,然后可以...

    Netty发送protoBuf格式数据

    总的来说,Netty发送protoBuf格式数据的过程包括定义数据结构、生成Java类、编写编码解码器、配置Netty管道以及在服务器和客户端之间发送和接收消息。这种结合提供了强大而高效的网络通信解决方案,适用于多种应用...

    springboot集成netty,使用protobuf作为数据交换格式,可以用于智能终端云端服务脚手架

    5. 实现业务逻辑:在服务端和客户端的业务代码中,使用protobuf生成的Java类进行数据操作。 6. 测试通信:编写客户端代码,连接到服务器并发送protobuf编码的数据,验证数据能否正确接收和处理。 通过这样的集成,...

    自己实现的protobuf 压缩类,并能序列化反序列化

    标题中的“自己实现的protobuf压缩类”指的是作者创建了一个自定义的类,该类能够处理Google的Protocol Buffers(protobuf)数据格式,并且具备数据压缩和解压的功能。protobuf是一种高效的数据序列化协议,它允许...

    protoc(Protobuf解码解密工具)用于无原始类时反编译数据,结构分析.rar

    它允许用户在没有原始类的情况下解析protobuf数据,这对于数据分析、日志分析、网络通信等领域都有着广泛的应用。只要遵循protobuf的语法规则,便可以轻松地扩展和修改数据结构,同时保持与旧数据的兼容性。

    python导出protobuf数据表及类

    在Python编程中,protobuf(Protocol Buffers)是一种高效的数据序列化技术,由Google开发,用于结构化数据的存储和通信。它提供了简单、快速且跨平台的方式来编码和解码数据,使得不同系统间的通信变得更加简单。...

    protobuf 序列化工具类

    本文将深入探讨protobuf的工作原理、使用方法、序列化与反序列化过程,以及如何使用protobuf工具类。 1. **protobuf工作原理** protobuf通过定义.proto文件来描述数据结构,这些文件包含了消息类型、字段、字段...

    Springboot集成websocket+protobuf基本Demo,可实现后端与前端数据实时发送与接收.zip

    protobuf是Google推出的一种高效的数据序列化协议,它能将结构化数据序列化为二进制流,相比JSON或XML,protobuf更紧凑、解析速度更快。 在Spring Boot中使用protobuf,首先需要定义.proto文件,该文件描述了数据的...

    protobuf-2.4.1数据协议文件

    protobuf-2.4.1数据协议文件是一种高效且灵活的数据序列化工具,广泛应用于软件开发中的数据通信和存储。Protocol Buffers(简称protobuf)由Google开发,它提供了一种方式来定义数据结构,并能将这些结构化数据转换...

    protobuf中文学习文档

    2. **代码生成**: 使用protobuf编译器protoc将.proto文件转换为目标语言的源码,生成读写protobuf数据的类或接口。 3. **序列化与反序列化**: 应用程序使用生成的代码将对象实例转换为二进制流(序列化),反之则将...

    python调用protobuf库发送与解释数据实例.rar

    3. 使用protobuf对象:在Python程序中,你可以实例化protobuf消息类,设置字段值,然后序列化成二进制数据。 4. 发送和接收:将序列化后的数据通过网络发送,服务器接收到后反序列化回protobuf对象,处理数据并可能...

    protobuf3.20.1-windows64

    总的来说,protobuf3.20.1-windows64是Google Protocol Buffers的一个发行版,专为Windows 64位系统设计,是开发高效、跨平台应用程序的重要工具,尤其在处理大量结构化数据的场景下,它的优势尤为明显。无论是在...

    protobufprotobufprotobufprotobuf

    Protocol Buffers的设计目标是提供一种更高效、更灵活的数据序列化方法,相比XML、JSON等格式,它在数据传输和存储时能占用更小的体积,且解析速度更快。 在protobuf的使用过程中,主要包括以下步骤: 1. 定义数据...

    protobuf-3.5-src

    4. **反序列化**:接收端使用相同的protobuf类将接收到的二进制数据还原为原始的数据结构。 **protobuf 的优势:** 1. **效率**:protobuf序列化的二进制格式比XML或JSON更紧凑,传输速度快,占用存储空间少。 2. *...

    compile_protobuf_protobuf:compile_protobuf_

    总之,protobuf是实现数据交换的有效工具,其编译过程是将.proto文件转换为可直接在代码中使用的类的关键步骤。通过正确管理和自动化这个过程,可以提高开发效率并保证项目的可维护性。理解并熟练掌握protobuf的编译...

    protobuf3.20.1 for android

    标题中的"protobuf3.20.1 for android"指的是Google开发的一种高效的数据序列化协议——Protocol Buffers(protobuf)的3.20.1版本,专门为Android平台的arm64-v8a架构优化。Protocol Buffers是一种语言无关、平台...

    Protobuf-master包

    综上,protobuf-master 包提供了完整的 Protobuf 源代码,开发者可以深入了解其工作原理,自定义编译器插件,或者对序列化库进行扩展,以满足特定需求。对于需要高效、轻量级序列化的 Android 和 Java 开发者来说,...

    Google Protobuf .java 类生成辅助工具

    标题中的“Google Protobuf .java 类生成辅助工具”是指一种使用Google的Protocol Buffers(Protobuf)技术,通过编写.proto文件来定义数据结构,并利用protoc.exe编译器生成对应的Java类。Protobuf是一种高效的数据...

Global site tag (gtag.js) - Google Analytics