tag:blogger.com,1999:blog-8596733192274108952.post5990945133089458735..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: The Dependency Inversion PrincipleSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-8596733192274108952.post-77131433197084926132020-10-16T12:19:46.877+03:002020-10-16T12:19:46.877+03:00"Вместо передачи зависимости всегда нужно под..."Вместо передачи зависимости всегда нужно подумать о возможности передачи ее результатов" - Прекрасно!Евгаhttps://www.blogger.com/profile/12521539724855958930noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-76939542930689317342020-05-20T12:41:34.365+03:002020-05-20T12:41:34.365+03:00Здравствуйте! В своей книге паттерны проектировани...Здравствуйте! В своей книге паттерны проектирования, в главе о DIP, вы пишете о том, что этот принцип выполняется если происходит инверсия зависимости, в смысле того что модули нижнего уровня обращаются к модулям верхнего уровня (то есть как я понимаю просто заменить реализации интерфейсом недостаточно). Вы приводите пример, когда мы передаем ISocket в класс ReportProcessor (кажется так название) и говорите что это нарушение DIP, так как ISocket лежит уровнем ниже ReportProcessor и тем самым не инвертирует зависимость. Более того, клиент ReportProcessor не должен знать об ISocket, это не относится к его уровню и вы пишете что это нарушает DIP.<br />У меня возник вопрос: <br />Если у класса есть volatile зависимости, которые не реализуют инверсию зависимости (не являются интерфейсами верхнего или этого же уровня), то мы не можем устанавливать их извне (по вашему определению), то как тогда мы можем устанавливать такие зависимости? В книге Симонса я пока не встретил ни одного примера где бы он не устанавливал зависимости извне<br /><br />Спасибо!Олегhttps://www.blogger.com/profile/04154846297789255904noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-10062481593970131912020-02-12T23:23:43.795+02:002020-02-12T23:23:43.795+02:00По поводу числа зависимостей: я так понимаю, корни...По поводу числа зависимостей: я так понимаю, корни этого числа идут от среднего объема кратковременной памяти человека. Раньше считалось, что человек может держать в рабочей памяти 7+-2 понятия. Затем же это число сократилось до 3-4. Отюсда и это правило. Поскольку в рабочую память сложно вложить больше 3-4-х вещей, то и проанализировать быстро качество дизайна класса, который принимает большее число зависимостей становится сложно.<br />Это число может увеличиться, если часть зависимостей является стандартным для проекта. По сути, тогда происходит "чанкирование" (хз, как это по русски правильно) информации и часть стандартных зависимостей просто отсеиваются мозгом.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-91520305101411496392019-11-19T16:13:15.513+02:002019-11-19T16:13:15.513+02:00Статья - шикарная! Просто и понятно о сложном.
Под...Статья - шикарная! Просто и понятно о сложном.<br />Подскажите, откуда появилось правило "...зависимостей станет слишком много (больше 4-х)..."?<br /><br />Поправьте, пожалуйста, текст: "DIP должен бороться с признаками плохого дизайном,.." -> дизайна<br />Yurihttps://www.blogger.com/profile/08269269876694699979noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-58729367286607474182014-09-30T18:42:00.004+03:002014-09-30T18:42:00.004+03:00Имеется ввиду реализация интерфейсов или наследова...Имеется ввиду реализация интерфейсов или наследование от абстрактных классов, которые представляют собой определение стратегии. Другими словами, когда класс по своей сути должен быть частью иерархии классов.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-31945970909499289972014-09-28T17:00:35.745+03:002014-09-28T17:00:35.745+03:00"Класс является реализацией некоторой стратег..."Класс является реализацией некоторой стратегии и будет использовать полиморфным образом. "<br />Вот это вообще не понял?MAD_Den++https://www.blogger.com/profile/09982899145494023413noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-28884464866249341662014-09-25T18:18:57.842+03:002014-09-25T18:18:57.842+03:00Спасибо, поправил.Спасибо, поправил.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-64240764393996028792014-09-25T18:18:04.134+03:002014-09-25T18:18:04.134+03:00Может не будем начинать? ;) Конструктив - велкам!Может не будем начинать? ;) Конструктив - велкам!Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-2326421303209927542014-09-25T14:14:55.133+03:002014-09-25T14:14:55.133+03:00DI очень многогранная тема. А иллюстрация с револь...DI очень многогранная тема. А иллюстрация с револьвером - бесценна!Anonymoushttps://www.blogger.com/profile/11100959805974330465noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-10026950857710042802014-09-25T11:18:53.674+03:002014-09-25T11:18:53.674+03:00опять кашаопять кашаAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-84205733489172622014-09-25T10:29:01.212+03:002014-09-25T10:29:01.212+03:00SPR предназначен для борьбы со сложностью – SRPSPR предназначен для борьбы со сложностью – SRPKaren Tazayanhttps://www.blogger.com/profile/17340270363445850237noreply@blogger.com