2014-12-13 27 views
0

我有三個班,UserUserControllerUserView,看起來有點像這樣:如果把一個ArrayList的MVC模式

public class User { 
    private String userName; 
    private String password; 

    //Constructor 

    //Getters and Setters 
} 

public class UserController { 
    private UserView view; 

    //methods 
} 

public class UserView { 
    //methods 
} 

我需要有一個ArrayList<User> allUsers,因爲我有多個用戶,但我在哪裏放?

我最初的想法是控制器類,但我所瞭解的MVC模式是,該視圖'執行'控制器,然後更新模型。該模型會通知它已更新的視圖,然後視圖將從模型中提取數據。所以如果我把它放在控制器中,視圖必須從控制器中提取數據,而不是跟隨MVC模式。

是否需要創建一個類Users,該類包含ArrayList<User>以便視圖可以從那裏獲取數據?

+0

我認爲必須有'用戶'模型,控制器和視圖。您必須將用戶集合添加到模型中。 – cybersoft 2014-12-13 16:14:12

+0

@cybersoft所以你的意思是讓一個'Users'類具有'ArrayList allUsers'和一個控制器和該類的視圖? – 2014-12-13 16:15:46

+0

沒有不好的類設計,你應該有另一個類來控制一組用戶。 – committedandroider 2014-12-13 16:20:23

回答

0

是的,模型視圖控制器的想法是當模型(數據)在視圖交互時更改或更新模型時,使控制器(偵聽器)更新視圖(GUI)。所以有一些像

public class Users{ 
    private List<User> users; 
    .... 
} 

然後在你的控制器,拿在用戶實例和視圖,以便它可以更新(或作用於)都相應。

public class UserController { 
      private Users toUpdateUsers; 
      private UserView toUpdateView; 
      public UserController(Users theUsers, UserView view) { 
       toUpdateusers = theUsers; 
       toUpdateView = view; 
      } 
      .... 
     } 
0

我覺得這個問題自己回答。

您已將同一類型的多個對象分組到模型中:用戶名和密碼。您的UserView可能會同時顯示它們。

您並沒有問自己,如果在一個模型中有多個字符串是合法的,您只需以適合您需求的方式定義模型。 也許有一個StringView與他們一起可能不會。

你又處於同樣的境地。如果將事物分組爲模型就是你需要的,那就去做吧。如果你需要額外的視圖取決於你想達到什麼。 也許你可以通過實例化許多UserView來創建UsersView,並將它們顯示在一個網格中,或者你只需​​要實例化一個,然後用箭頭按鈕從模型列表中取出模型。 這一切都取決於你想要做什麼。

0

這是設計師需要處理這個問題的情況,控制器,模型和視圖之間必須有清晰的界限。控制器必須控制應用程序的流程並且視圖必須處理視圖部分並將模型顯示到前端。現在,您要返回多模型用戶,必須注意將要更新模型(日期)的業務層,因此對於此,必須是另一個類,您將在其中處理數據並返回給控制器。