Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

Как работает внедрение зависимостей, и зачем нужно его использовать? - Программирование Android

28.09.2016, 11:37. Просмотров 385. Ответов 12
Метки нет (Все метки)

Как работает внедрение зависимостей? И в каких ситуациях, зачем нужно его использовать?Например если я объявил поле как @Inject то как к нему потом обращаться как его инициализировать можете подробно объяснить на каком нибудь простеньком примере?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2016, 11:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работает внедрение зависимостей, и зачем нужно его использовать? (Программирование Android):

Зачем нужен массив указателей на функцию и как его использовать? - C++
народ подскажите пожалуйста, зачем нужен массив указателей на функцию и как его использовать.

Зачем в качестве параметра передавать null и потом использовать его как массив? - PHP
Я встретил такой код и он УБИЛ МЕНЯ НАПОВАЛ(: public static function getCellsWeight($kpW, $ss=null, $alf=null) { $res =...

Тип void как возвращаемое значение функции: что он такое, зачем он нужен, где, когда и как его использовать? - C++
Объясните пожалуйста про Void для оооочень далекого человека. Читаю книгу Шилдта, в принципе всё ясно, всё понимаю и пробую, но вот Void -...

Внедрение зависимостей в .NET Ninject - C# ASP.NET
Здравствуйте я читал литературу по "Внедрение зависимостей в .NET" мне нужно получше разобраться с этим материалом в часности как вывести...

Namespace - зачем его использовать - C#
Извините за тупой вопрос, не как не могу понят зачем так писать: namespace Hello{ class Hello Wolrd { public static void Main() ...

Зачем нужно использовать Action? - PascalABC.NET
Один знакомый любит использовать Action. Так, меня заинтересовала эта тема. Зачем нужно использовать Action? И когда их нужно использовать?

12
Pablito
2505 / 1989 / 619
Регистрация: 12.05.2014
Сообщений: 6,943
Завершенные тесты: 1
28.09.2016, 11:51 #2
нет
0
fraley
106 / 106 / 40
Регистрация: 24.05.2015
Сообщений: 322
28.09.2016, 12:02 #3
Если не нажмешь меня, не узнаешь.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.09.2016, 17:09 #4
fraley, не мог пройти мимо сей интригующей надписи, но там надо включить JavaScript, забавно. А ожидал заветные слова типа "пнх" с объяснением почему
0
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 439
29.09.2016, 23:29 #5
yura91, Я конечно щас как сморожу чушь, но к вопросу решения определенной задачи подходят с пониманием, зачем и для чего а не наоборот.
Цитата Сообщение от yura91 Посмотреть сообщение
Как работает внедрение зависимостей?
Если у вас возникает такой вопрос, может оно вам вовсе не надо?
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
30.09.2016, 11:20  [ТС] #6
да я так просто понять как это работает, но уже разобрался более менее.
0
REALIST07
Автор FAQ
Автор FAQ
176 / 176 / 13
Регистрация: 11.06.2010
Сообщений: 934
30.09.2016, 23:37 #7
yura91, ну так поделись опытом, всему форуму интересно это узнать
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
01.10.2016, 08:34 #8
Цитата Сообщение от yura91 Посмотреть сообщение
уже разобрался более менее
Тоже присоединяюсь к вопросу! С темой раньше не сталкивался. Некоторые обьяснения на хабре вообще плавят мозг
Кликните здесь для просмотра всего текста
Принципы инверсии управления:
Модули верхних уровней не должны зависеть от модулей нижних уровней. Модули обоих уровней должны зависеть от абстракций.
Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
(сиди и гадай/гулли что эти термины означают)

Самое нейтральное/читабельное нашел здесь: https://habrahabr.ru/company/dataart/blog/283018/
Вычитал треть не "поплыв"... пока не понял преимуществ! читаю дальше... жду (от Вас) примера реального применения "на пальцах"...
Раньше все "зависимости" держал в голове... Иногда "дерево" связей рисовал на бумаге для наглядности... Тесты(упоминаются в этих статьях) не использую (не особо разобрался и пока не вижу смысла тестов, хоть все и хвалят)...
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
01.10.2016, 12:04  [ТС] #9
Ну по сути это внедрение заменяет инициализацию. То есть внедряет инстанс к объекту который помечен как @Inject. Ну там есть еще @Module @Providers https://github.com/MihailovJava/DaggerTest.git - ссылка на пример который я разобрал с DI и немного понял суть

Добавлено через 3 минуты
Ну сначала мы создаем в Application DaggerComponent прописывает все модули которые в него входят. в модулях есть Providers методы, которые и отвечают за инициализацию Inject полей. Запускаем инициализацию вызовом inject метода DaggerComponent

Добавлено через 40 секунд
Ну в кратце как то так. Но пример впринципи понятный

Добавлено через 25 минут
А кстати не подскажете как по нажатию на кнопку вставить LinearLayout с определенной разметкой в тот Layout где я нахожусь именно в нужное мне место? Ну то есть у меня есть Relative или LinearLayout в нем есть 3 кнопки идущие подряд и я хочу вставить по нажатию на вторую кнопку определенный LinearLayout со своей разметкой, так чтобы он у меня отобразился между второй и третьей кнопкой. Как такое лучше реализовать?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
01.10.2016, 21:27 #10
Цитата Сообщение от yura91 Посмотреть сообщение
Ну по сути это внедрение заменяет инициализацию.
А конечная цель какая??? Что упрощаем???
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
02.10.2016, 11:00  [ТС] #11
ну вроде для unit тестов говорят хорошо. Упрощает покрытие кода тестами.
1
Pablito
2505 / 1989 / 619
Регистрация: 12.05.2014
Сообщений: 6,943
Завершенные тесты: 1
02.10.2016, 11:05 #12
нет там никаких преимуществ, либу эту юзают потому что "это модно и один мой знакомый 20-ти летний синьер сказал что это очень круто"
нашли у кого спрашивать, у человека, который и стартанул эту тему с вопросами
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
02.10.2016, 23:36 #13
Я тоже как-то смотрел эту тему. Очень замороченно, каждый понимает по-своему. Якобы есть преимущество в скорости написания кода, уменьшении размера классов. На деле растёт количество классов, надо достаточно сильно "въехать" в тему, никакого особенного улучшения я не заметил и забил на эту тему.
0
02.10.2016, 23:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2016, 23:36
Привет! Вот еще темы с ответами:

Зачем в данной программе нужно было использовать шаблоны? - C++/CLI
сделан у меня шаблон для двунаправленного списка...причём список формируется по разному в зависимости от типа (инт, дабл и стринг) ...

Зачем нужно использовать инициализаторы элемент-данных класса? - C++
Имеется фрагмент кода. Если быть точным, то описание класса. #include <iostream> #include <ctime> #include <Windows.h> using...

Объяснить (с примерами) для чего нужен RTTI, как и когда его можно и нужно использовать - C++
доброго времени суток. вопрос такой как я понял RTTI это свойсвто языка С++ которое было добавлено позднее его релиза, что бы...

Код макроса работает лишь в одном файле, как его использовать в другие файлы - VBA
Здравствуйте. Код работает лишь в одном файле, пробовал разные варианты импортировать, сохранять как надстройку не получается, выходит...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru