【发布时间】:2010-11-10 08:35:11
【问题描述】:
作为一个编程初学者,当我遇到墙壁时,它总是让我感到困扰。 目前,其中一堵墙是相互依赖的对象。
正如您在我的问题历史中看到的那样,我目前正在开发一个黑莓应用程序,我在其中实现了我称之为 MVC 模式的东西,但这并不是我认为的本意。
你看,一个新手程序员,你看这个图这样的摘要,你就会明白它背后的想法。但实施它是另一回事。
alt text http://www.ibm.com/developerworks/wireless/library/wi-arch6/theoretical.gif
请不要停止阅读 :) 我正在向您展示我的一些代码,其中包含一些特定于黑莓的内容,但您应该看看我在做什么。
我的应用程序的主要入口点
public class ContactManager extends UiApplication
{
private static ContactManagerMainScreenModel MainScreenModel = new ContactManagerMainScreenModel();
private static ContactManagerMainScreen MainScreenView = null;
public static void main(String[] args)
{
new ContactManager().enterEventDispatcher();
}
public ContactManager()
{
MainScreenView = new ContactManagerMainScreen(MainScreenModel);
// Displays the Splashscreen then opens the Mainscreen
new SplashScreen(UiApplication.getUiApplication(), MainScreenView);
}
}
主屏幕模型
public class ContactManagerMainScreenModel
{
ContactManagerMainScreen v;
// Loading Local Storage
LocalContactStorage LocalContactStorage = new LocalContactStorage();
// Define Data List
private Vector vContacts_Favorites;
public void register(ContactManagerMainScreen v)
{
this.v = v;
}
// Retrieve Favorite Contacts from Persistant Storage
public Vector getFavoriteContactsFromLocalStorage()
{
vContacts_Favorites = LocalContactStorage.getFavoriteContactsFromLocalStorage();
return vContacts_Favorites;
}
// Put Retrieve Favorite Contacts from Persistant Storage
public void saveFavoriteContactsToLocalStorage()
{
LocalContactStorage.saveFavoriteContactsToLocalStorage(vContacts_Favorites);
}
}
MainScreenController
public class ContactManagerMainScreenController
{
private ContactManagerMainScreenModel _model = null;
private ContactManagerMainScreen _view = null;
public ContactManagerMainScreenController(ContactManagerMainScreen view, ContactManagerMainScreenModel model)
{
this._model = model;
this._view = view;
}
public void HideFavoriteList()
{
if( this._view._ContactList.getManager() != null)
{
this._view._ContactList.getManager().delete(this._view._ContactList);
} else
{
this._view._bottom_box.add(this._view._ContactList);
}
}
}
还在吗?好吧……
我的问题是,我想使用控制器来更改 UI 元素,例如显示弹出框、隐藏某些东西或其他东西。
但是所有这些 UI 元素都在 View 中定义(此处为 ContactManagerMainScreen),因此必须向 Controller 提供对 View 的引用。这导致我的共同依赖对象痛苦。
在声明视图之前我无法创建控制器。如果不要求允许控制器更改 UIElements,那是没有问题的(如图所示)。
我现在做的是视图创建控制器
controller = new ContactManagerMainScreenController(this , model);
这有意义吗?我想了解这种模式,所以将我的代码称为垃圾或任何你喜欢的东西:) 我只是想学习一些东西。
附:请原谅我的英语不好:)
【问题讨论】:
标签: java model-view-controller design-patterns java-me