Будучи новичком в программировании, я всегда сталкиваюсь с проблемами, когда сталкиваюсь со стенами.
В настоящее время одной из стен являются объекты взаимозависимости.
Как вы можете видеть из моей истории вопросов, я в настоящее время работаю над приложением Blackberry, в котором я реализовал то, что я называю MVC Pattern, но я не совсем так думаю.
Видите ли, начинающий программист смотрит на тезисы, подобные этой графике, и у вас есть идея, лежащая в основе этого. Но реализовать это другое дело.
альтернативный текст http://www.ibm.com/developerworks/wireless/library/wi-arch6/theoretical.gif
Пожалуйста, не прекращайте читать :) Я показываю вам часть своего кода, который содержит некоторые специфические для blackberry вещи, но вы должны увидеть, что я делаю.
Основная точка входа для моего приложения
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);
}
}
}
Все еще там? Хорошо ...
Моя проблема здесь в том, что я хочу использовать контроллер для изменения элементов пользовательского интерфейса, таких как отображение всплывающего окна, скрытие некоторых или других вещей.
Но все эти элементы пользовательского интерфейса определены в представлении (здесь ContactManagerMainScreen), поэтому они должны предоставить контроллеру ссылку на представление. Это приводит к тому, что мои совместно зависимые объекты становятся несчастными.
Я не могу создать контроллер до объявления представления. Без требования разрешить контроллеру изменять элементы UIE, это не будет проблемой (как показано на графике).
Что я делаю сейчас, так это то, что представление создает контроллер
controller = new ContactManagerMainScreenController(this , model);
Имеет ли это смысл? Я хочу понять шаблон, поэтому назовите мой код мусором или как угодно :) Я просто хочу кое-что узнать.
P.S. Прошу прощения за мой плохой английский:)