「バー/クラブ」(あなたが飲む/社交する場所)を表す2つのオブジェクトがあります。
あるシナリオでは、バーの名前、住所、距離、スローガンが必要です
別のシナリオでは、バー名、住所、ウェブサイトのURL、ロゴが必要です
したがって、同じものを表すが異なるフィールドを持つ2つのオブジェクトがあります。
不変オブジェクトを使用するのが好きなので、すべてのフィールドはconstructorから設定されます。
1つのオプションは、2つのコンストラクターを持ち、他のフィールドをヌルにすることです。
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
}
ゲッターを使用するときにnullチェックを行う必要があるため、私はこれが好きではありません
私の実際の例では、最初のシナリオには3つのフィールドがあり、2番目のシナリオには約10があるので、2つのコンストラクター、nullを宣言しなければならないフィールドの量、そしてオブジェクトが使用されているときに、Bar
どのユーザーがどこを使用しているか、そしてどのフィールドがヌルで何がそうでないかを知っている。
他にどんなオプションがありますか?
2つのクラスが呼ばれるBarPreview
とBar
?
ある種の継承/インターフェース?
他に素晴らしいものはありますか?
You should only ask practical, answerable questions based on actual problems that you face.
そしてそれはまさにここで起こっていることです
Bar
識別子としての合法的な使用を考え出しました!