HobbyProggy Ответов: 0

Развязка пользовательский интерфейс и усилитель;& логика


Привет землякам Славянский СР,

снова думая о своей архитектуре 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

Интерфейс просмотра делает контроллер / презентатор тестируемым. Это самое ценное. У меня нет интерфейса контроллера в моих проектах. Я не вижу, что интерфейс контроллера может добавить к этой истории. Таким образом, создатель контроллера знает, что это фактический тип контроллеров, и в этот момент существует тесная связь. До сих пор я не сталкивался с проблемами по этому поводу.

0 Ответов