2010-05-26 76 views
2

我的應用程序遵循MVC設計模式。我一直遇到的問題是需要從Controller類外調用Controller類中的方法(例如,View類想要調用Controller方法,或者Manager類想調用Controller方法)。 MVC中允許以這種方式調用Controller方法嗎?如果允許,有什麼正確的方法來做到這一點?MVC - 調用控制器方法

根據我所遵循的MVC版本(似乎有那麼多不同的版本),視圖知道模型,而控制器知道視圖。這樣做,我無法訪問控制器。以下是我找到的最佳網站,以及描述我遵循的MVC版本的網站:http://leepoint.net/notes-java/GUI/structure/40mvc.html。主程序代碼塊真的顯示了這是如何工作的。

感謝您的任何答案。

回答

1

採取從您鏈接到文章這段仔細一看:

查看 此視圖不知道有關控制器,除了,它提供了一種爲控制器的偵聽器的方法。其他組織是可能的(例如,Controller的偵聽器是可以被View引用的非私有變量,View調用Controller來獲取偵聽器,View調用Controller中的方法來處理動作,...)。

您在視圖和控制器之間有觀察者模式。 MVC本身不是一個模式,但至少有兩個組合。

管理視圖/控制器通信的一種方法是使用事件。該視圖觸發某些用戶操作的事件(不知道誰可能處理它們)。控制器處理這些事件並相應地執行操作。

+0

是的,我按照你說的方式使用事件,但是我最感興趣的是「視圖調用Controller中的方法來處理動作。」文章說,這在MVC的「其他組織」中是可能的。但是如何?我無法訪問視圖中的控制器(或其他任何地方)。 – JT703 2010-05-26 14:57:38

+0

事件也可用於處理操作。但是,爲了讓事情更加同步但仍然可以解耦,您可以定義控制器將實現的接口。接口將在某個初始化點傳遞給視圖。然後該視圖將通過該接口間接調用Controller。 – 2010-05-26 16:54:17

相關問題