Развязка пользовательский интерфейс и усилитель;& логика
Привет землякам Славянский СР,
снова думая о своей архитектуре SW, я просто пришел к вопросу, имеет ли смысл развязка обоих способов интерфейсами ради развязки.
Вот высказанная идея:
Я создаю контроллер для пользовательского интерфейса, так что контроллер может делать все деловые вещи, а пользовательский интерфейс остается в основном тупым. У меня есть ссылка на контроллер в пользовательском интерфейсе для доступа к его публичным функциям. Контроллер реализует интерфейс controlerspecific.
С другой стороны, контроллер имеет ссылку на пользовательский интерфейс через интерфейс. При этом я гарантирую, что функции, вызываемые контроллером, "реализованы" в любом пользовательском интерфейсе, реализующем интерфейс.
Длинная история в коде
public class UcProjectProperties : IProjectPropertiesView { ProjectPropertiesControler _projPropContr = new ProjectPropertiesControler(this); public void UpdateUi() { //Do the update } private void ProcessUserInput() { //Get input and hand to Controler _projPropContr.GenerateUpdateData(); } }
Интерфейс Uc
public interface IProjectPropertiesView { void UpdateUi(); }
Контролер
public class ProjectPropertiesControler : IProjectPropertiesControler { IProjectPropertiesView _view; public void ProjectPropertiesControler(IProjectPropertiesView InView) { _view = InView; } public void GenerateUpdateData() { //Generate the data and update the Ui _view.UpdateUi(); } }
Интерфейс контроллера
public interface IProjectPropertiesView { void GenerateUpdateData(); }
Я подумал, что это хорошая идея, потому что теперь я могу очень легко провести модульный тест, но боюсь, что это немного чересчур?
Вы, ребята, думаете, что это правильный путь или я должен свести только к одному интерфейсу?
Заранее спасибо
Что я уже пробовал:
Код написан выше и объяснен :)
FranzBe
Интерфейс просмотра делает контроллер / презентатор тестируемым. Это самое ценное. У меня нет интерфейса контроллера в моих проектах. Я не вижу, что интерфейс контроллера может добавить к этой истории. Таким образом, создатель контроллера знает, что это фактический тип контроллеров, и в этот момент существует тесная связь. До сих пор я не сталкивался с проблемами по этому поводу.