Блог им. WinterMute

Торговая система своими руками. Часть 1. Введение. MVP.

    • 29 августа 2017, 13:52
    • |
    • k100
  • Еще

   Добрый день. В предыдущем посте я вкратце описал предпосылки и суть системы. Сегодня будет немного теории,  я думал не вставлять эту часть, но описанные здесь термины будут использоваться в последующих статьях.

   Даже такие проекты, как торговая система, требуют определённого подхода к структуре – проект разрастается со временем, хочется большего, и на это надо закладываться в самом начале. Даже, если система пишется под себя, не стоит уклоняться от  более формального подхода. Это, как ставить кубик на кубик — хорошая расстановка даст более прочную башню. Такие проекты справляются с увеличением сложности, новые изменения усиливают проект, в конце концов, такие проекты, способны перерасти во что-то более сложное (типа фазового перехода). А проекты с непродуманной архитектурой наоборот – со временем вносить изменения становится мучительнее и дороже, возрастают затраты на обслуживание, новые изменения ослабляют проект и он не способен перерасти во что-то более сложное. Но, сами понимаете, не всё так просто. Выбирая, каким будет проект, мы, опираясь на опыт, всё равно, угадываем направления развития.

   В программировании мало универсальных подходов, которые бы одинаково эффективно работали везде, и MVP (model-view-presenter) – это лишь один из шаблонов. Зачастую, в больших проектах разные шаблоны и принципы совмещаются. Назначение MVP простое – разнести ответственность по разным частям кода, и сделать структуру проекта наглядной и (что также очень важно) тестируемой.

   Обычно MVP интерпретируют,  как луковицу – это несколько независимых друг от друга слоёв. Model – это центральная часть системы, в ней зашита бизнес-логика и состояние, это сама суть системы, её уникальные свойства, то, что отличает одну систему от другой. Всё остальное – связь с БД, различные сервисы, периферия, формы – это детали реализации, от которых модель не должна зависеть.

   View или представление – это отображение: web-интерфейс, формы, или даже консоль. Всё то, благодаря чему мы можем взаимодействовать с моделью. Начинающие программисты обычно не разделяют model и view, а запихивают логику в события нажатия кнопок, или в события открытия форм. Это плохо тем, что со временем структура становится монолитной, не масштабируемой, не поддающейся изменениям. В такой структуре нельзя выделить какую-то часть и безболезненно изменить её – изменения в одной части, фиг знает как, отразятся на остальных.

   Модель не должна знать, что там, и как отображается. И Presenter (в 80x это называли Controller, тогда речь шла об устройствах ввода/вывода) – это как раз посредник,  коммутатор, соединяющий различные сервисы и модель, открывающий формы, и передающий данные между различными слоями программы.

Также, важно сказать, что такое Interface – это некая спецификация, на основе которой, можно построить реализацию – класс. Например, приходя в банк, я не иду к конкретной операционистке Танечке, мне не важно, кто это, я лишь хочу осуществить типовую операцию, прописанную в спецификации сотрудника – например, выдать деньги, или погасить кредит. Лучше не зависеть от реализации – она может поменяться (Танечка уйдёт в декрет), а зависеть от абстракции – интерфейса. Во всех частях программы я оперирую интерфейсами, а не конкретными реализациями. Где-то в самом начале программы, используя IoC контейнер, я описываю, какой класс реализует тот или иной интерфейс, но об этом позже.

   И ещё, скажу о событийно-ориентированном подходе – тут всё просто – есть оповещатель события и подписчики. Например, я попрошу приятеля позвонить мне, когда будут интересующие меня новости – я подписался на это событие, и я буду оповещён, когда оно произойдёт. В C# есть event’s (события), в определённый момент событие срабатывает, вызывая по очереди код на него подписавшийся. Так, например, устроены обработчики событий в компонентах форм.

   В следующий раз уже буду конкретно описывать саму систему.

163 | ★16
6 комментариев
на собеседованиях в большие конторы любят по такой теории погонять =))
avatar
Андрей К, ни разу не спрашивали )
Zweroboi, ну вы их наверное поразили еще до того =)
avatar
полезного ничего не нашел, много шума как на минутках
avatar
Под «торговой системой» обычно понимают нечто более другое. Вы скорее рассказываете о «тестере торговых стратегий» ну или «симуляторе».
avatar
нельзя выделить какую-то часть и безболезненно изменить её
а в вашем этом эМВиСи все равно нельзя нихрена изменить — вернее можно косметически, но если хоцца изменить чёто конкретно, то все равно придется переписывать почти заново и Эи и Ви и Си…

Читайте на SMART-LAB:
Фото
Без крыльев, а летают: неизведанные бумаги и где они обитают
Если отсчитывать результат с начала года, то в лидерах роста окажутся бумаги, которые совсем не на слуху и обычно не входят в отчеты аналитиков....
Фото
67 наиболее и 63 наименее доходных облигаций с рейтингами от BB- до AA+, по оценке Иволги
📌Полный файл с отбором ВДО для этой публикации —  👉👉👉  в  чате Иволги : 👉 t.me/ivolgavdo/84572 Ранжируем сравнительную...
Фото
📈 Рынок ресейла: факторы роста
Рынок вторичных товаров в последние годы показывает устойчивый рост — как в мире, так и в России. Всё больше покупателей и продавцов...
Фото
Очень старались: лучший разбор акций OZON и отчета за 2025 год из всех, которые вы читали. 
OZON опубликовал отчет за 2025 год и провел звонок для инвесторов.  ✅ пресс-релиз ✅ презентация   ✅ полный отчет С OZON в Mozgovik Research...

теги блога k100

....все тэги



UPDONW
Новый дизайн