我有一个具有多个属性的数据模型
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);
}
我的问题是,在这种情况下构建数据模型的最佳实践是什么?人们说数据不可变保证线程安全,如果属性只能设置一次,那将达到目的吗?有没有非骇客的方式来做到这一点?
答案 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..
}
通常,您将对象的创建委派给工厂。然后,您可以扩展工厂以构建不同类型的对象。但是,在“创新设计模式”的名义下还有其他方法。