0
我想知道如果這是很好的做法,一個好辦法做到這一點。這是一種使用一種靜態方法訪問最終類的好習慣嗎?
我通過教程建立一個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()'它不需要是靜態的。然後你可以做一些事情,比如在不同的測試中重寫它。 –