我有两个代表“酒吧/俱乐部”(您喝酒/社交的地方)的对象。
在一种情况下,我需要栏名称,地址,距离,标语
在另一种情况下,我需要栏名称,地址,网站网址,徽标
因此,我有两个对象代表相同的事物,但具有不同的字段。
我喜欢使用不可变的对象,因此所有字段都是从构造函数设置的。
一种选择是拥有两个构造函数,而其他字段为空,即:
class Bar {
private final String name;
private final Distance distance;
private final Url url;
public Bar(String name, Distance distance){
this.name = name;
this.distance = distance;
this.url = null;
}
public Bar(String name, Url url){
this.name = name;
this.distance = null;
this.url = url;
}
// getters
}
我不喜欢这样,因为当您使用吸气剂时您将必须进行空检查
在我的真实示例中,第一个场景有3个字段,第二个场景有10个字段,所以拥有两个构造函数实在是一件很痛苦的事情,我必须声明为null的字段数量,然后在使用对象时,您不会不知道Bar
您在哪里使用哪个字段,因此哪些字段为空而哪些字段为空。
我还有什么其他选择?
两个类称为BarPreview
和Bar
?
某种类型的继承/接口?
还有很棒的东西吗?
You should only ask practical, answerable questions based on actual problems that you face.
恰恰是这里发生的一切
Bar
用作标识符的合法用途!