0
これは良い練習であり、これを行う良い方法であると思っています。これは、1つの静的メソッドで最終クラスにアクセスするための良い習慣ですか?
私はチュートリアルでJavaFXアプリケーションを構築しています。今のところ永続性はないので、静的メソッドを使って最終クラスを作成しました。これは人の配列を作成して返すので、アプリに情報を入力できます。私のMainAppにクラスのコンストラクタで
、私は単純に、最終的なクラス
Person[] people = PersonArray.getPeople();
を呼び出すことにより、このようなように見える他のクラスの静的メソッドを呼び出します。
package com.myubercode.address.model;
import java.time.LocalDate;
/**
* Created by klown on 4/9/17.
*/
public final class PersonArray {
public static Person[] getPeople() {
final Person[] PEOPLE = new Person[5];
Person p1 = new Person("Hans", "Brix");
p1.setBirthday(LocalDate.of(1999, 3, 22));
p1.setStreet("Eldon Court");
p1.setCity("Denver");
p1.setPostalCode(80221);
p1.setState("CO");
PEOPLE[0] = p1;
Person p2 = new Person("Aldus", "Eldon");
p2.setBirthday(LocalDate.of(1976, 2, 02));
p2.setStreet("Beaudry Dr");
p2.setCity("Emeryville");
p2.setPostalCode(98036);
p2.setState("CA");
PEOPLE[1] = p2;
Person p3 = new Person("Juju", "Jones");
p3.setBirthday(LocalDate.of(1969, 1, 12));
p3.setStreet("Midland Rd");
p3.setCity("San Leandro");
p3.setPostalCode(93063);
p3.setState("CA");
PEOPLE[2] = p3;
Person p4 = new Person("Jazelle", "Jackson");
p4.setBirthday(LocalDate.of(1991, 5, 26));
p4.setStreet("Hilary Ct");
p4.setCity("Beaverton");
p4.setPostalCode(98018);
p4.setState("OR");
PEOPLE[3] = p4;
Person p5 = new Person("Elton", "Aldus");
p5.setBirthday(LocalDate.of(1981, 12, 19));
p5.setStreet("Oleander Circle");
p5.setCity("Seattle");
p5.setPostalCode(98107);
p5.setState("WA");
PEOPLE[4] = p5;
return PEOPLE;
}
}
はする必要がないということなのでクラスをインスタンス化し、メモリを浪費する、この良い練習ですか? ありがとう
おそらくそうではありません(ただし、この質問はこのフォーラムでは意見に基づいている可能性もあります)。ある時点では、実際の永続化メカニズムを追加したいと思う可能性があります。これは、現在、プレースホルダとして機能しています。その時点での静的データアクセスオブジェクトは問題になります。ライフサイクルを制御することができないため、データベースリソースの作成や解放などを制御することが難しくなるためです。クラスを作成し、メソッドのインスタンスメソッドを作成します。インスタンスを作成し、それをコントローラ(または必要な場所)に渡します。 –
'新しいPersonArray()。getPeople()'を書くと、静的である必要はありません。次に、異なるテストでオーバーライドするようなことができます。 –