2017-04-11 33 views
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; 
    } 
} 

作爲,沒有必要實例化班級和浪費記憶,這是一個好習慣嗎? 感謝

+0

大概沒有(雖然這個問題可能是太基礎的意見這個論壇)。在某些時候,您可能希望添加一個真正的持久性機制,現在它充當佔位符。在這一點上靜態數據訪問對象變成有問題的,因爲你無法控制它的生命週期,所以這將是很難控制的東西,如創建和數據庫資源等的釋放所以它可能會更好,現在定義一個類並製作方法實例方法。創建一個實例並將其傳遞給控制器​​(或任何你需要它的地方)。 –

+1

如果你寫的'新PersonArray()。getPeople()'它不需要是靜態的。然後你可以做一些事情,比如在不同的測試中重寫它。 –

回答

0

我將它的實例,並用它在主應用程序,感謝您的輸入。

相關問題