Передача взгляда на интерфейс недовольна? - PullRequest
0 голосов
/ 02 мая 2020

Предположим, что ваша модель или модель представления должна отображать сообщение, но она явно не хочет получать доступ к пользовательскому интерфейсу. Таким образом, он реализует интерфейс, который имеет метод Notify (String).

Теперь тот, кто реализует этот интерфейс, может показать сообщение, и этот объект обычно будет классом на основе пользовательского интерфейса, который должен быть передан в модель или модель представления. .

Мой вопрос заключается в том, будет ли недоволен передачей объекта пользовательского интерфейса, даже если он передается только как интерфейс?

Я проиллюстрировал эту проблему с помощью имитирующего примера.

  public interface INotify
    {
        void  Notify(String msg);
    }

    class Model
    {
        INotify _notify;

        public Model(INotify notify )
        {
            _notify = notify;
        }

        public void Add(int a, int b)
        {
            int result = a + b;

            _notify.Notify("The result is " + result.ToString());
        }

    }

    class View : INotify
    {
        public void Notify(String msg)
        {
            Console.Write("I am the view, I received this: ");
            Console.WriteLine(msg);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            View view = new View();
            Model model = new Model(view);

            model.Add(4, 7);
        }
    }

Результат, как и ожидалось, ключевой момент в том, что он распечатан из вида.

Я - представление, я получил это: Результат - 11 Нажмите любую клавишу для продолжения. , .

В реальном мире класс view будет полноценным классом пользовательского интерфейса, таким как форма windows или wpf et c, но он передается на место только для интерфейса, который он инвентарь. Будет ли это неодобрительно, почему представление передается как интерфейс, который он реализует?

Если это не одобрится, разве это не работа интерфейса? В этом случае ожидается, что его производный класс будет каким-то классом пользовательского интерфейса, в конце концов, чтобы показать сообщение, и у него будет много других вещей.

Я пытаюсь понять практическое использование интерфейсов и также решить проблему с ним, когда иногда представление модели в MVV C или MVVM может захотеть отобразить сообщение.

Другой вариант заключается в реализации полного шаблона наблюдателя, но в моем случае модель или представление-модель необходимо отображать сообщение только в одном окне (никогда не в нескольких), поэтому логично передать это представление для интерфейса.

1 Ответ

0 голосов
/ 02 мая 2020

Я действительно не думаю, что это вообще было бы проблемой, если только это не влияет на производительность плохо, что заметно или что это выглядит странно позже в проекте, когда вы начинаете добавлять больше и больше на GUI, et c.

...