通过不同级别构建数据模型的设计模式

时间:2020-07-06 03:14:51

标签: java design-patterns

我有一个具有多个属性的数据模型

class MyData {
    public string attr1;
    public string attr2;
    public string attr3;
}

这些属性值未在公共位置分配,而是在分配值的多个函数中传递了此数据模型。例如,

public void method1(final MyData data) {
    ...
    data.attr1 = "val1";
    ...
    method2(data);
}

public void method2(final MyData data) {
    ...
    data.attr2 = "val2";
    ...
    method3(data);
}

public void method3(final MyData data) {
    ...
    data.attr3 = "val3";
    ...
    finalProcess(data);
}

我的问题是,在这种情况下构建数据模型的最佳实践是什么?人们说数据不可变保证线程安全,如果属性只能设置一次,那将达到目的吗?有没有非骇客的方式来做到这一点?

2 个答案:

答案 0 :(得分:0)

根据描述,我认为在这种情况下,Builder模式会有所帮助。

addEventListener

MyData类可以设为不可变的,从而使其具有线程安全性

答案 1 :(得分:0)

如果这些字段是公共的,则很难对MyData进行某种控制,因为每个人都可以访问和更改值。首先将字段设置为私有,并仅通过以下方法提供对它们的访问:

class MyData {
    private String attr1;
    private String attr2;
    private String attr3;

    public void setAttr1(String attr1) {
        this.attr1=attr1;
    }
    // Other setter methods..
}

通常,您将对象的创建委派给工厂。然后,您可以扩展工厂以构建不同类型的对象。但是,在“创新设计模式”的名义下还有其他方法。

相关问题