大型哑数据对象的最佳实践?

时间:2015-08-22 02:29:22

标签: java json gson

我正在使用gson创建一个代表一些JSON的java对象。这个JSON定义了触摸屏游戏控制器的布局,因此非常复杂(每个设备都有一个方向,每个方向都有按钮,每个按钮都有位置/大小等)。

我尝试创建的程序将作为控制器布局的独立编辑器。

我所做的是为每种类型(按钮,设备等)创建一个类,如下所示:

public class Device {
    public Button dpad;
    public Button a;
    public Button b;
    public Button start;
    public Button select;
    public Button l;
    public Button r;
    public Button menu;
    public ExtendedEdges extendedEdges;
}

对象本身没有逻辑;所有序列化/反序列化都由gson处理。

我最近阅读了一些编程书籍,其中一个主题是Demeter法则和代码耦合,这个类会导致其他对象破坏它。但是,实际上没有办法符合良好的编码实践。提供访问器方法和将字段设为私有只会是多余的,因为程序需要对整个对象的写访问权。另外,写起来相当容易:

Device device = foo(); //returns Device
bar(device.dpad.width); //Does something that involves the width of the dpad

有没有更好的方法来处理嵌套的JSON表示,或者在这种情况下违反了得墨忒耳法?

1 个答案:

答案 0 :(得分:1)

你需要担心的耦合是你的数据表示,这确实带来风险;如果这个JSON对象被公开使用,你就不能自愿从中删除元素,因为依赖它的消费者会破坏它。您当然可以添加元素,因为使用遗留结构的消费者不一定会关心额外的字段。

除此之外,这种巨型数据对象结构在JSON数据的序列化/反序列化中很常见。再次,它是耦合的,但只与你的回应的实际结构有关。