gpt4 book ai didi

serialization - 为什么protocol buffer编译器生成的消息类都是不可变的?

转载 作者:行者123 更新时间:2023-12-05 06:46:13 25 4
gpt4 key购买 nike

protocol buffer 编译器生成的消息类是不可变的。消息类包含适当的 setter 方法,但没有 getter 方法。此约束不适用于其他序列化技术,如 Java 二进制序列化、XML、JSON 等。

据我了解,不变性在进行并发编程时很有用。不变性可能有助于实现线程安全。但是,我认为,这不是 Protocol Buffer 的原因。

使消息类不可变的原因可能是什么?

阅读 Protocol Buffer 文档后,上述内容似乎仅适用于 Java(至少)而不适用于 C++ 和其他支持的平台/语言。

注:这个问题只是为了满足我的好奇心。

谢谢。

最佳答案

google 实现确实使用了构建器模式——即可变的(但在实体方面不是很有用)构建器,它创建了一个不可变的对象实例。这不是要求 - 事实上,有几个平台的替代实现使用此设计模式。但坦率地说,这根本不是问题,因为如果存在任何摩擦(以及您所描述的:摩擦),那么您应该简单地避免使用 DTO 类型(即用于序列化的对象)作为您的主要域实体类型。一旦你这样做,它就不是问题了:你编写自己的域实体类型用你喜欢的任何模式(包括任何域逻辑等),然后映射到/从 DTO 类型当你需要的时候;那么 DTO 层使用的设计模式的选择仅仅是一个无趣的实现细节。

但同样:对于您选择的平台,请查看是否 any alternative implementations可能更符合您的要求。

关于serialization - 为什么protocol buffer编译器生成的消息类都是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18075911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com