我该怎么做?在我的Java应用程序中,我试图定义以下2个“类型” -
DataElement 上有getter和setter,但我希望 ONLY DataSet 能够改变 DataElement 。
我不想让DataElement setter包私有,因为我想允许扩展/覆盖我的DataElement实现。
我还希望DataElement类型成为Hibernate持久化的类(除非这不是必需的)。
答案 0 :(得分:3)
您可以使用Facade
模式生成DataSet返回不可变的DataElement实例。
答案 1 :(得分:1)
ControlAltDel打败了我;我觉得Facade模式在这里很有意义。这就是我提出的方法。通过使用仅允许读取访问的公共接口,您可以在包/ DataSet
类中嵌套所需的任何内容。
public interface DataElementReadable {
public int getElementInt();
public String getElementString();
// etc.
}
protected class DataSet {
private class DataElementReadableWritable implements DataElementReadable {
int getElementInt() { return ... }
void setElementInt(int elementInt) { ... }
// etc.
}
...
}