|
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
|
||||||
Паттерн наблюдатель05.12.2015, 01:29. Показов 3365. Ответов 10
Метки нет (Все метки)
Здравствуйте ! Подскажите пожалуйста , в этой программе (программа рабочая ) откуда берется значение sInfo в 64 строке ?
0
|
||||||
| 05.12.2015, 01:29 | |
|
Ответы с готовыми решениями:
10
Создать паттерн Наблюдатель Паттерн Наблюдатель - записать содержимое TextBox в файл |
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 05.12.2015, 01:38 | |
|
Владимирл, это поле класса Stock:
StockInfo sInfo; в 41 строке.Добавлено через 6 минут А получает рандомные значения в Market методе.
0
|
|
|
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
|
|
| 05.12.2015, 01:43 [ТС] | |
|
IamRain, Это я вижу . Не пойму последовательность , механизм работы в частности в 64 строке
этого sInfo , как отрабатывают его значения ? В голове каша .
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 05.12.2015, 01:46 | |
|
Владимирл, объект Stock пробегается по списку своих наблюдателей и каждый наблюдатель вызывает
свой метод Update (Bank или Broker, у каждого своя логика).
0
|
|
|
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
|
|
| 05.12.2015, 02:03 [ТС] | |
|
IamRain, Значит , если я правильно понял , рандомные значения из 73 и 74 строки попадают в 64 строку .А затем в метод Update (Bank или Broker) ?
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 05.12.2015, 02:04 | |
|
Владимирл, да.
0
|
|
|
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
|
|
| 05.12.2015, 02:25 [ТС] | |
|
IamRain, Я Вас понял , спасибо . У меня небольшой вопрос не касаемый программы , c разрешения модератора . Вот как новая тема по ООП С# , так я смотрю , на своем небольшом опыте , постоянно , особенно когда начинаешь писать по теме программу , возникает какая-нибудь путаница и как говорится понеслась : голова ноги , ноги голова . Все время практически по началу ощущение , темный лес и куча дров . Соответственно вопрос это , что такая данность , специфика предмета и как на нее реагировать ?
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||
| 05.12.2015, 02:38 | ||
|
Не по теме: Это называется оффтоп. И оформляется в OFF-тэге. Касаемо вопроса: это не специфика предмета - это специфика головы. :) Абстрагирование от сложностей, системное мышление - черты, которые должны присутствовать при решении задач по программированию.
0
|
||
|
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
|
||||||
| 05.12.2015, 23:39 [ТС] | ||||||
|
IamRain, Подскажите пожалуйста 94 строка :
0
|
||||||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||||||||||||||||
| 06.12.2015, 07:43 | ||||||||||||||||
|
Владимирл, this - это ссылка на текущий объект.
Если уж реализовывать паттерн наблюдатель, то C# имеет встроеные для этого средства - события. Я бы переписал ваш код так:
1) Наблюдаемый объект ничего не должен знать о своих наблюдателях. Финансовый рынок, по сути, не должно заботить, сколько у него trader-ов. Он просто должен делать оповещения, что изменилась ситуация на рынке. То есть Stock не должен хранить ссылку на список своих наблюдателей. 2) Из первого вытекает, что реализация "наблюдателя" не совсем корректная, хоть и рабочая. 3) Информация о курсах валют без привязки к конкретному времени - не имеет смысла. Последующий анализ и прогноз изменений будет невозможен. Хотя сама тематика модели очень даже интересная, особенно, если интересуешься Machine Learning и Big Data. Добавлено через 1 час 9 минут Хотя тут есть вероятность, что в клиентском коде можно будет подписаться на событие одним и тем же методом несколько раз, поэтому если уж писать так как принято в С#, то нужно удалить методы из интерфейса:
Добавлено через 25 минут Либо, наоборот, убрать из интерфейса событие и оставить два метода, а в базовом классе добавить его как protected, и реализовать также как это указано в моем первом примере. Тогда подписываться будут только один раз и те, кто получают Stock параметром в конструктор. Добавлено через 9 минут Хотя нет, виноват, все равно смогут, вообщем, второй вариант для меня (с одним event в интерфейсе) наиболее предпочтительный.
0
|
||||||||||||||||
|
2 / 2 / 0
Регистрация: 19.12.2013
Сообщений: 216
|
|
| 07.12.2015, 08:15 [ТС] | |
|
IamRain,
Мне бы пока с первой программой прояснить ситуацию , а то могу запутаться . Сложность для меня составляет интерфейс то ,что первый раз его встречаю. Прочитал теорию , конечно не все ,только в объеме того ,чтобы понимать что такое интерфейс . И видать механизм работы интефейса в данной программе не дает понять , как в целом работает программа. Короче , ближе к конкретике. Строка 13, объявляется объект stock . Этот объект stock входит в определения объектов bank и broker. Затем конструкторы Broker и Bank создают соответственно объекты классов Broker и Bank. В конструкторах Broker и Bank указана строка stock.RegisterObserver(this) , ее действие мне не очень ясно. Могу на уровне догадки предполагать , что stock вносится в список observers с помощью метода public void RegisterObserver(IObserver o) , 50 строка. И тут возникает вопрос , своего рода тупик !!! А рандомные значения из 73 и 74 строки попавшие в 64 строку ? Они тоже , можно сказать одновременно со stock , вносятся в список observers . В итоге не получается ясной логики , какая-то накладка , своего рода тупик. ![]() Добавлено через 9 часов 4 минуты IamRain, P.S. Не пойму откуда берется (как формируется) значение о в 34,35,52,57,62 строках ?
0
|
|
| 07.12.2015, 08:15 | |
|
Помогаю со студенческими работами здесь
11
Какую стратегию проектирования описывает паттерн "источник-наблюдатель" Почему паттерн абстрактная фабрика - паттерн уровня объектов, если в нём могут быть статические отношения?
Inotifypropertychanged для реализации паттерна "наблюдатель" Паттерн Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|