2012-06-05 83 views
2

我的用戶界面應該位於簡單的CRUD應用程序(使用Java)的位置。
在我的應用程序中,我有主類以及處理所有與數據庫有關的事情的類,例如從中獲取信息或向其添加新信息。我的用戶界面代碼應該放在哪裏?

明智的做法是將UI元素保留在主類中,並讓數據庫類保留用戶輸入,例如,添加新元素插入數據庫類,如下所示:

public static void main(String[] args) { 
    Scanner scan = new Scanner(system.in); 

    System.out.println("Give me your name:"); 
    String name = scan.nextLine(); 

    DatabaseHandler db = new DatabaseHandler(); 
    db.addNameToDatabase(name); 
} 

還是應該輸入提示所述DatabaseHandler內部存在的,所以在主級僅示出了方法調用,例如:

public static void main(String[] args) { 
    DatabaseHandler db = new DatabaseHandler(); 
    db.addNameToDatabase(); //user interface now inside addNameToDatabase method 
} 
+2

[請不要在問題標題中使用'問題'一詞](http://meta.stackexchange.com/questions/114221/why-isnt-the-word-question-allowed-in-question-titles )(即使它拼寫錯誤)。我們已經知道這是一個問題。試着找出一個很好的標題來顯示問題的內容。 – brimborium

回答

0

這實際上取決於你的程序的大小。如果你的程序很小並且容易在一個文件中讀取,那就讓它如此。隨着程序變得越來越大,清晰度就變得非常必要。 (如果它比一個直接的過程編碼小,可能是一個類中最好的。)
如果你把它分解出來,那麼主類應該是UI和數據部分的驅動程序,它們應該是在不同的模塊中。您可能希望查看不同的模式,例如MVC或MVP,以瞭解如何分割它。
正如你所看到的,沒有一種方法適合所有人。分解成組件/模塊/軟件包的大型程序由於佈線而難以佈局,但讓團隊更容易開展工作。

0

在開發過程中,請記住 - high cohesionlow coupling。對於你的特定問題,這樣想 - 在任何一種方法中,你有沒有high cohesion?號爲什麼database類應該處理用戶輸入?爲什麼main方法應該處理用戶輸入?不,你的方式,理想情況下,都是錯的。

但我們很少遇到理想情況。你的IO應該由另一個類來處理,你的數據庫應該由另一個類來處理,所以你的UI也應該處理。而且在這些類中,每種方法都應該有一個特定的任務。例如,在您的IO類中使用getter和setter來獲取和設置變量。做每件事情的方法確保了高度的凝聚力。通過這種方式,您最終也可以確保低耦合,因爲您的模塊不會相互依賴。你可能會認爲 - 哦,我可以把所有這些都寫在一個課堂上,並加以解決,但請記住,這種方法有很多優點。在維護你的代碼必須由其他人完成的情況下,他們會通過類名和方法知道要知道在哪裏查找問題。如果你不是以這種方式組織起來的,那麼你必須經過一段時間才能看到自己的代碼,否則你甚至不會識別出一個單詞。記住 - 高內聚和低耦合FTW!

理想情況下 - 您的主要應該只是您的程序的起點,沒有別的。

相關問題