|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
||||||
Организация событий между классами04.01.2017, 12:23. Показов 7484. Ответов 41
Метки нет (Все метки)
Есть класс записи в файл, писать необходимо из экземпляров _a, _b, но из этих экземпляров нет доступа к
экземпляру log3, приходиться создавать в каждом классе свои экземпляры log1 и log2 - что не есть правильно мне так кажется, как правильно все таки сделать посоветуйте пожалуйста?
0
|
||||||
| 04.01.2017, 12:23 | |
|
Ответы с готовыми решениями:
41
Отношения между классами Связи между классами Передача между классами |
|
102 / 106 / 62
Регистрация: 19.11.2015
Сообщений: 380
|
||||||
| 05.01.2017, 19:14 | ||||||
Сообщение было отмечено dav1977 как решение
Решение
Это условно, но он не статический.
Можно вот так передавать параметры:
1
|
||||||
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
|
| 05.01.2017, 19:49 | |
|
dav1977,
Евенты нужны в тех ситуациях, когда обьект-хост не знает и знать не может о возможных слушателях. И на каком основании вы решаете хороша ли статика или нет?) Именно благодаря статике вы сможете получить возможно обращаться к ОДНОМУ И ТОМУ ЖЕ обьекту "откуда вы хотите"; Вы изначально выбрали неверную архитектуру, а потом сделали вывод в том что евенты вообще не нужны.
0
|
|
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
||
| 05.01.2017, 20:05 [ТС] | ||
|
это суть вопроса сделать передачу данных между не статическими классами. Для этого events придумали, и сингелтон
0
|
||
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
||||||||||||
| 05.01.2017, 20:15 | ||||||||||||
|
ПС. Синглтон это патерн, который создает статический обьект, если уж вы так "статику" не любите. Добавлено через 6 минут Если уж на то пошло. Это код от 1231231ghacking
0
|
||||||||||||
|
|
||
| 05.01.2017, 20:26 | ||
|
1. События используются, как правило, в том случае, когда класс-слушатель ожидает получения данных, не предпринимая попыток их получить. То есть, данные предоставляются кем-то извне, и момент их получения (или их НЕ получения) от класса не зависит. Класс просто ожидает получения данных. Пришли - обработал, нет - значит издатель ничего не отправлял. 2. Статический класс (либо синглет) принято использовать в том случае, когда в приложении есть общие данные, которые необходимо передавать между объектами. В этом случае классы (объекты) сами обращаются за данными к общему хранилищу (статический класс/синглет) и сами их туда записывают. Что использовать в каждом конкретном случае - зависит от логики работы программы, и каждый принимает решение сам, исходя из своих требований.
0
|
||
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
|||
| 05.01.2017, 20:34 [ТС] | |||
|
статику я не люблю потому что, я не могу наследовать статический класс и сингелтон тоже наверное а мне надо чтобы класс логирования был наследником от не статического класса с данными, в это суть вопроса НЕ СТАТИЧЕСКИМИ данными Лучше сингелтона я пока не вижу на events не возможно сделать, может что-то лучше есть чем сингелтон? Добавлено через 8 минут
0
|
|||
|
102 / 106 / 62
Регистрация: 19.11.2015
Сообщений: 380
|
|
| 05.01.2017, 20:46 | |
|
Класс Singleton можно наследовать, если нужно, приведу пример
0
|
|
|
|
|||
| 05.01.2017, 20:47 | |||
![]() Вот вам реальный пример. Есть форма, при нажатии некой сферической кнопки нужно создать класс-наследник (через фабрику). Конкретный тип того класса, который нужно создать, хранится в синглете, свойства которого устанавливаются совершенно другой формой и в произвольное время. Сам синглет сериализуется в файл и читается из него. Вопрос: при вызове формы с настройками, где нам сохранить тип класса, который будет создан в будущем (а может и не будет, если кнопку не нажать)? Если следовать вашей логике, то нам надо создать событие в форме настроек, а в основной форме на него подписываться. Но! В таком случае мы получаем две жестко связанных формы, работа которых по отдельности уже невозможна. С тем же подходом, что я указал выше, мы имеем совершенно независимую форму с настройками, которую запросто сможем использовать (с небольшими корректировками) в каком угодно приложении. Разницу замечаете? Вы каждый раз пишете велосипед, а я написал раз и использую тогда и там, когда мне это нужно, с минимумом переделок.
0
|
|||
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
||||
| 05.01.2017, 21:09 [ТС] | ||||
|
Добавлено через 8 минут Добавлено через 4 минуты мне статику предлагаете в условии задачи статику нельзя использовать, так скажите что задача не решаемая
0
|
||||
|
102 / 106 / 62
Регистрация: 19.11.2015
Сообщений: 380
|
||||||
| 05.01.2017, 21:24 | ||||||
Сообщение было отмечено dav1977 как решение
Решение
Собственно,вот:
Всегда рад помочь, надеюсь, вам помог пример решить вашу проблему
1
|
||||||
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
||
| 05.01.2017, 21:46 | ||
|
Вам стоит немного натаскать себя в алгоритмическом мышлении, тога подобный фраз о нарушении ООП и прочей ерунде типа наследование от синглета в котором класс который будет выполнять логирование, который тоже должен откуда то наследоваться возникать не будет.
0
|
||
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
||
| 05.01.2017, 22:19 [ТС] | ||
|
смысл тогда этих 2х классов? Инкапсуля́ция где? Где целостность данных их бесопастность, делайте тогда один класс да и все.
0
|
||
|
.NET senior
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
|
||||||
| 06.01.2017, 01:52 | ||||||
Сообщение было отмечено dav1977 как решение
Решение
Кхм... "смешались в кучу кони, люди"...
dav1977, давайте ещё раз, чтобы и мне, и другим читателям было понятно. Вам нужно решение следующей задачи: есть класс SomeClass, для которого создаются несколько экземпляров (от 1 до пока не надоест), и с этими экземплярами в какой-то момент времени выполняется какое-то действие, которое необходимо залогировать, причём все классы должны быть экземплярными (надеюсь, это именно то, что Вы хотите получить в итоге)? Пример внедрения зависимости через конструктор
1
|
||||||
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
||
| 06.01.2017, 03:20 | ||
|
И я вам еще раз повторю что возможности языка используются в зависимости от текущей задачи, а лепить непонятный велосипед из-за того что какой-то идиот написал (а вы прочитали), что статика это совсем плохо в любых ее проявлениях (а то у вас прям фобия на статику) - это не значит, что это правда
0
|
||
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
||
| 06.01.2017, 08:13 [ТС] | ||
|
я раньше все делал на статике это очень просто, сейчас хочу повысить уровень вот пожалуйста красивое решение предложил bax_tang и никакой статики. bax_tang СПАСИБО!
0
|
||
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
|
| 06.01.2017, 10:11 [ТС] | |
|
чтобы начать изучать SOLID надо хотя бы с event и интерфесами разобраться, изучать еще много надо,
согласен
0
|
|
|
22 / 20 / 3
Регистрация: 12.10.2016
Сообщений: 62
|
|
| 06.01.2017, 10:43 | |
|
dav1977, но только надо разобраться в том, что это такое, а не пытаться решать задачи. Ничего хорошего не получится, либо получится, но затраты времени на хождение по граблям для достижения приемлемого результат во много раз превысят затраты времени на прочтение хорошей книги. Я эту книгу прочёл практически в самом начале пути. Да, с первого прочтения не всё уложилось. Но надо читать ещё раз
0
|
|
|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
|
| 06.01.2017, 10:50 [ТС] | |
|
Абсолютно согласен, поэтому я и не могу понять зачем events нужны, как их применять. Нужна база ООП. Спасибо за советы и за книжку буду покупать.
0
|
|
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
||
| 06.01.2017, 12:06 | ||
|
0
|
||
| 06.01.2017, 12:06 | |
|
Обмен данными между классами Передача данных между классами Передача строк между классами Ссылка на обьект между классами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|