Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430

Что такое DI, IoC, паттерны. ?

29.07.2015, 14:40. Показов 2197. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемы форумчане! Возник следующий вопрос, что такое DI, IoC, шаблоны проектирования, паттерны для чего они нужны, где их применять, что это такое ?.... много рыскал в интернете сам разобраться не смог. Всем заранее спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.07.2015, 14:40
Ответы с готовыми решениями:

MVVM + DI + IOC = а что делать с дочерними VM?
допустим есть Company, у него есть список Employee, у каждого список Addresses... есть окно, список Company, справа список Employee, а...

Что такое IIS и что такое PWS? Почему одно без другого не работает?
вот уже второй день пытаюсь немного разобраться в АСП. накидал небольшую тестовую страничку. но с серверами я ничего не понимаю! что...

Что такое метод equals() и что такое класс Object
Ответи на два вопроса очень надо 1) Что такое метод equals(). Чем он отличается от операции ==. 2) Что такое класс Object? Какие в нем...

9
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.07.2015, 15:03
Цитата Сообщение от valdi_korot Посмотреть сообщение
что такое DI, IoC
Первое — это частный случай второго.

Цитата Сообщение от valdi_korot Посмотреть сообщение
паттерны для чего они нужны, где их применять, что это такое ?
Нужны они для разработки модульных приложений.
Мы говорим — IoC, подразумеваем — плагины, мы говорим аддоны — подразумеваем IoC.
0
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
29.07.2015, 16:19  [ТС]
kolorotur, с чего мне начать ? что бы правильно этим пользоваться ? что бы найти примеры и тому подобное
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.07.2015, 16:28
Цитата Сообщение от valdi_korot Посмотреть сообщение
с чего мне начать ?
Можете начать со статьи на вики: https://en.wikipedia.org/wiki/Inversion_of_control
Гляньте в главу "способы реализации".

Если вам нужны какие-то видео-уроки или мануалы, то чего-то "общего", к сожалению, подсказать не могу.
Если изучаете какую-то конкретную реализацию (например, MEF), то смотрите офф. сайты этих технологий — на них, как правило, выкладываются примеры в документации.
0
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
29.07.2015, 18:01
эти штуковины нужны что было сложней читать и отлаживать код, заодно чуть-чуть снизить производительность
ну и чуть сложней тесты делать, но зато их можно сделать гораздо больше
2
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.07.2015, 20:02
Цитата Сообщение от m0nax Посмотреть сообщение
эти штуковины нужны что было сложней читать и отлаживать код, заодно чуть-чуть снизить производительность
ну и чуть сложней тесты делать, но зато их можно сделать гораздо больше
Невозможно спорить.
Однако, любое инженерное решение — это компромисс между желаниями и возможностями.
0
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
30.07.2015, 09:11  [ТС]
Цитата Сообщение от m0nax Посмотреть сообщение
эти штуковины нужны что было сложней читать и отлаживать код, заодно чуть-чуть снизить производительность
ну и чуть сложней тесты делать, но зато их можно сделать гораздо больше
вы мне так ответили, как будто использовать это вовсе и не нужно
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
30.07.2015, 10:42
Лучший ответ Сообщение было отмечено valdi_korot как решение

Решение

valdi_korot,
Цитата Сообщение от valdi_korot Посмотреть сообщение
что такое DI, IoC, шаблоны проектирования, паттерны для чего они нужны
DI и IoC это паттерны уменьшающие связность классов между собой.
Паттерны(они же шаблоны) в целом - это некие приемы проектирования систем (проверенные временем и множеством программистов), которые в основном решают задачи уменьшения связности.
Зачем уменьшать связность? Причин несколько:
1) чем меньше связность, тем легче повторно использовать код
2) чем меньше связность, тем легче разделить работу между несколькими программистами
3) чем меньше связность, тем легче проводить тестирование

Кроме того, паттерны еще решают проблему коммуникации между программистами. Это своего рода язык. Если один программист говорит другому, что здесь нужна абстрактная фабрика, то оба понимают о чем речь. Если бы не было такого паттерна, то им бы пришлось долго объяснять друг другу что они имеют ввиду.

Что касается вопроса использовать их или нет.
Если вы начинающий программист, лично я бы не советовал начинать с паттернов. Паттерны нужны в основном при работе в команде. Если вы разрабатываете в одиночку - смысл паттернов частично теряется. Не то что бы они вам совсем не нужны, просто вам не обязательно знать что вот такой-то прием называется "Мост".

Насчет DI - пока можете и не заморачиваться, потому что это монструозные приемы, которые на первых парах будут только забивать код ненужными абстракциями.
IoC - лучше вникнуть, потому что понимание этого принципа существенно улучшит ваш код.

В целом же я бы советовал начинать не с паттернов а с общих приемов и принципов проектирования. Это принципы SOLID, KISS и т.п. Что касается паттернов, то обязательно нужно понять шаблоны типа MVP, MVC. Это основа проектирования пользовательских интерфейсов и без них никуда.
3
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
30.07.2015, 15:35  [ТС]
Storm23, Огромное спасибо!!!
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
31.07.2015, 08:40
Паттерны - типичные способы применения объектов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2015, 08:40
Помогаю со студенческими работами здесь

Что такое паттерны, где их применяют и где прочитать о них?
Насколько я понимаю, паттерны - это шаблон. Т.е. уже кем-то написанный код, который хорошо работает и не занимается любовью с головным...

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Что такое напряжение и что такое сила тока с позиции заряженных частиц
Объясните пожалуйста, что такое напряжение и что такое сила тока с позиции заряженных частиц. Например, имеется проводник в цепи, чем...

Что такое монитор и что такое мьютекс? Это же разные вещи?
Здравствуйте. В разных айти-статьях по-разному используют эти термины, причём часто их путают друг с другом. Хотелось бы, чтобы кто-нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru