|
шарпопочитатель
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
|
|
SOLID принципы23.01.2017, 17:55. Показов 17657. Ответов 359
Метки нет (Все метки)
всего 5 принципов:
1) srp - класс должен описывать только те характеристики, которые на объект из предметной области возложены. То есть либо кот, либо пес, котопес быть не может. 2) ocp - Писать надо классы так, чтобы их можно было легко расширить, но не изменять 3) Лисков - ??? 4) делайте много маленьких интерфейсов, один дольшой интерфейс это плохо. Так как рефакторинг усложняется... 5) Инверсия зависимостей. Типо композицию поменяйте на агрегацию Я не понимаю принцип Лисков. Можете объяснить популярно?
0
|
|
| 23.01.2017, 17:55 | |
|
Ответы с готовыми решениями:
359
Нелогичные принципы программирования SOLID Нарушен ли solid ? |
|
Заблокирован
|
||
| 24.01.2017, 15:23 | ||
|
hoggy, ваш пример немного не о том, что я имел в виду. У вас тут коллбек оnClick -- это метод объекта button. Вы просто конкретизируете его, конфигурируете существующий объект. С таким же успехом там мог быть любой другой метод, это просто метод объекта button.
Хз, что Вы имели в виду под: Я имел в виду передачу коллбека в рантайме
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 24.01.2017, 15:35 | |||||||
|
С нативными делегатами гораздо понятнее будет:
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 24.01.2017, 15:54 | ||||
|
это - делегат. он ничего ни о какой кнопке не знает. но благодаря ему, не нужно делать никаких наследников базовой кнопки только для того, что бы кликнуться. и не нужно никому знать про то, что случится при клике. итого: минус все интерфейсы и их возможные наследники. Добавлено через 2 минуты только кнопка про это не знает, и ей это не интересно. она знает только про себя. и про то, что когда кликнеццо, нужно будет пнуть делегат. а уж что он там будет делать - ей всё равно. Добавлено через 1 минуту
0
|
||||
|
Заблокирован
|
||
| 24.01.2017, 15:56 | ||
|
Fulcrum_013, по-моему, это все смахивает на демагогию. Никакой объект вообще никогда не знает о том как осуществляется применение его метода к себе(своему окружению), этим занимается реализация языка. Ну, мы можем поверх реализации написать явно свою реализацию того же самого, что и так есть нативно, суть от этого не изменится.
С другой стороны, с точки зрения интерфейса, выражение
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 24.01.2017, 15:57 | ||
|
Да кстати это когда лампочку Ильича воспевали в притчах, компутеры были ламповые и те все поголовно пережитки загнивающего капитализма. А нонче каждая уважающая себя лампочка имеет внутри контупер который все ее физические процессы физичит (типа фазы синусоидой делает с кос-фи правильным, и т.п )
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 24.01.2017, 15:57 | ||
|
Да кстати это когда лампочку Ильича воспевали в притчах, компутеры были ламповые и те все поголовно пережитки загнивающего капитализма. А нонче каждая уважающая себя лампочка имеет внутри контупер который все ее физические процессы физичит (типа фазы синусоидой делает с кос-фи правильным, и т.п )
0
|
||
|
Заблокирован
|
||
| 24.01.2017, 16:00 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 24.01.2017, 16:03 | ||
|
в след. раз прежде чем что нить написать, подумайте, как это соотносится с обсуждаемой темой. в данном случае - solid.
0
|
||
|
Заблокирован
|
||||
| 24.01.2017, 16:25 | ||||
|
Добавлено через 10 минут Не по теме:
Добавлено через 5 минут
0
|
||||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 24.01.2017, 17:22 | |||
|
И чтобы скомпилировать модуль с классом Кнопка, нужно указать ссылку на модуль с классом Лампочка. з.ы. Класс Кнопка не имеет никакого отношения к GUI. Возможно, кроме метода TurnOn() там ничего больше нет. Добавлено через 6 минут Если в моём классе Кошка будет метод Летать(Велосипед велик), то Кошка будет зависеть от Велосипеда. И ещё Кошка будет Летать Велосипедом. Пытаться привязать к коду аналогии из жизни на основе совпадения названий чего-нибудь - весьма странное занятие.
0
|
|||
| 24.01.2017, 17:25 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 24.01.2017, 17:36 | |||
|
нахрена вообще нужны все эти интерфейсы языку, концепция которого позволяет ему проворачивать ровно тоже самое, и без них? не имеет никакого отношения к DI.
0
|
|||
|
Заблокирован
|
|||
| 24.01.2017, 19:06 | |||
|
Добавлено через 7 минут А в вашем примере, ни о каких принципах проектирования речи не идет, на мой взгляд. лампочка и выключатель -- это вещи одного порядка с точки зрения иерархии, и что к чему подключать надо определять исходя из конкретной задачи, в данном случае, тут нет никакого общего принципа. Логичней всего было бы подключать и то и другое к чему то, что использует и то и другое. То есть, Ваш кейз в любом случае плох. И, видимо, опять же, зависим от языка, в данном случае, от особенностей компиляции Добавлено через 1 час 18 минут
0
|
|||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 24.01.2017, 20:36 | |||
|
0
|
|||
|
Заблокирован
|
|||||
| 24.01.2017, 20:53 | |||||
Добавлено через 4 минуты Добавлено через 4 минуты Shamil1, да и вообще, кстати, не надо тянуть сюда низкоуровневые детали, такие как особенности компиляции и работа модульной системы конкретного языка/языков. Если мы хотим оставаться в рамках конструктивного обсуждения, мы должны придерживаться терминологии ООП, т.е. Класс/тип, экземпляр, объект, сообщение и тд
0
|
|||||
|
шарпопочитатель
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
|
|
| 24.01.2017, 21:18 [ТС] | |
|
Я не обзываю, вы выдрали из контекста и подставили меня! )) их критикуют все просто, а по факту они излагаю все что написано в книге гоф. Теперь вроде разбираюсь, если лисковский принцип понял верно. А так я хз наверно таким макаром, читая гоф можно еще пару принципов предложить.
0
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|||
| 24.01.2017, 21:22 | |||
|
Есть класс А и есть класс Б с методом В(А а). Класс Б зависит от класса А (потому что содержит метод, принимающий аргумент класса А). Ну и дальше так, как я писал выше. В моём примере сначала модуль МБ, содержащий класс Б, зависел от модуля МА, содержащего класс А. После добавления интерфейса в МБ и замены типа аргумента в методе В на интерфейс, модуль МА стал зависеть от модуля МБ. "Стрелочка" зависимости развернулась в противоположную сторону.
0
|
|||
|
Заблокирован
|
||
| 24.01.2017, 21:30 | ||
|
0
|
||
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|
| 24.01.2017, 21:39 | |
|
Именно это и называется зависимостью в программировании.
0
|
|
|
Заблокирован
|
||
| 24.01.2017, 21:41 | ||
|
Shamil1, грубо говоря, если некоторая функция принимает аргумент определенного типа, очевидно, что на помент вызова этой функции, этот тип должен существовать. Что значит избавиться от зависимости в данном случае? Когда человек избавляется от головы, он избавляется от зависимости от головы? Отличный способ
![]() Добавлено через 1 минуту
0
|
||
| 24.01.2017, 21:41 | |
|
Solid Works Api
Применение SOLID принципов Solid Works Api и C#
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|