Эй, выглядывает :-) (... извините, это немного долго)
Я занимаюсь разработкой приложения с использованием C # Winforms и шаблона MVP,
это всего лишь относительно простое приложение - хотя оно выполняет довольно много работы, поэтому я считаю, что шаблон MVP очень помогает при организации кода.
Я создал экземпляр используемых моделей - экземпляр STATIC - в классе Program перед запуском WinForm. (Классы Model НЕ являются статическими классами ума)
Затем я создаю основную форму (View), которая создает ссылку на ее Presenter.
(Все классы View / Presenter не являются статичными).
Мое обоснование статического экземпляра состоит в том, чтобы предоставить всему приложению доступ к одной и той же информации модели. А затем, когда приложение закрывается, я могу получить доступ к современным данным модели из класса Program и сохранить все, что нужно сохранить. Что приятно, так как хранит всю загрузку / сохранение в одном месте.
В любом случае будет только один экземпляр каждого класса Model, нет соединений с БД и что у вас есть.
И из того, что я могу сказать, только одна вещь будет нуждаться в доступе к любой модели одновременно.
У меня есть Потоки BackgroundWorker, которые делают разные вещи, но я не ссылаюсь ни на одну из Моделей в этих Потоках. Я передаю значение данных из Модели в поток. Затем поток передает обратно информацию, которая, если требуется, распространяется в соответствующую модель через основной поток.
Я просто подумал, что создание экземпляра модели как статического было более аккуратным способом, чем вечная передача ссылок ... (знаете, передайте ссылку в основную форму, которая затем передает ее в другую форму и т. Д.)
Таким образом, код внутри представления выглядит так:
// this = ref to the view</p>
<p>PresenterA p = new PresenterA( this, Program.ModelA );
...
(Очевидно, что имена классов - это не просто PresenterA, ModelA и т. Д., Что было бы довольно глупо)
Теперь, я почти уверен, что кто-то будет кричать на меня и говорить мне, что это ужасный способ делать вещи.
Если это так, могут ли те, кто выступает против этого, говорить сейчас или навсегда замолчать.
ТИА
(Кстати, я просто нуб, я не зарабатываю c # для жизни, это хобби)
: -)