|
2 / 2 / 3
Регистрация: 13.12.2015
Сообщений: 49
|
||||||
Организация событий между классами04.01.2017, 12:23. Показов 7610. Ответов 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 | |
|
Обмен данными между классами Передача данных между классами Передача строк между классами Ссылка на обьект между классами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|