Java 使用一个静态方法访问最后一个类是一个好的实践吗?
我想知道这是否是一个好的做法和一个很好的方式做到这一点 我正在通过教程构建一个JavaFX应用程序。现在还没有持久性,所以我用一个静态方法创建了最后一个类,它构建了一个人员数组并返回它,这样我就可以用一些信息填充我的应用程序 在我的MainApp类构造函数中,我只需通过调用Java 使用一个静态方法访问最后一个类是一个好的实践吗?,java,javafx,packages,Java,Javafx,Packages,我想知道这是否是一个好的做法和一个很好的方式做到这一点 我正在通过教程构建一个JavaFX应用程序。现在还没有持久性,所以我用一个静态方法创建了最后一个类,它构建了一个人员数组并返回它,这样我就可以用一些信息填充我的应用程序 在我的MainApp类构造函数中,我只需通过调用 Person[] people = PersonArray.getPeople(); 最后一节课是这样的: package com.myubercode.address.model; import java.time.L
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;
}
}
因为不需要实例化类和浪费内存,这是一个好的实践吗?
谢谢我将把它作为一个实例,并在主应用程序中使用它,谢谢你的输入。可能不会(尽管这个问题对于这个论坛来说可能过于基于观点)。在某种程度上,您可能希望添加一个真正的持久性机制,现在它充当了一个占位符。此时静态数据访问对象会出现问题,因为您将无法控制其生命周期,因此很难控制数据库资源的创建和释放等。因此,现在最好定义一个类并使方法成为实例方法。创建一个实例并将其传递给控制器(或任何您需要的地方)。如果您编写
newpersonarray().getPeople()
,它不需要是静态的。然后您可以在不同的测试中覆盖它。