Открыть список
Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Компонент Dependency Injection

Symfony
Новый компонент от Symfony касается крайне важного паттерна проектирования — Dependency Injection. Честно говоря, я много про него читал, но на практике не очень видел как применить, и теория была для меня довольно абстрактной. Симфонисты и здесь выдержали фирменный стиль. К компоненту приложена книжка, которая начинается с главы «что такое Dependency Injection»? И шаг за шагом некоторый учебный класс рефакторится в элегантное решение. Чтобы показать, что компонент может использоваться не только с Симфони, в качестве примеров используются и классы из Zend-фреймворка. Жалко только, что книжку нельзя скачать.

Вот еще один пример использования этого компонента с Zend-фреймворком.
Всего голосов 5: ↑3 и ↓2 +1
Просмотры6.2K
Комментарии 4

Phemto и Паттерн Dependency Injection. Часть 1

PHP
Перевод
Я не встречал хорошего описания паттерна Dependency Injection применительно к PHP.

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

Я вспомнил еще об одной библиотеке для DI, Phemto. Ее автор, — Маркус Бэйкер, создатель SimpleTest. К сожалению на сайте содержится краткая и невнятная справка. тем не менее, проект развиавется, а внутри дистрибутива лежит статья с крайне хорошим объяснением про DI, ну и руководством конечно. Phemto, — очень миниатюрный проект, состоящий из трех не очень больших файлов.

Мне показалось, полезным перевести статью на русский язык и выложить сюда. Статья не очень большая, но содержательная. Ссылку на оригинал дать не могу, оригинал внутри дистрибутива :)

Читать дальше →
Всего голосов 41: ↑38 и ↓3 +35
Просмотры23.1K
Комментарии 31

Dependency injection для Scala: Cake Pattern

Разработка веб-сайтов
Я совсем недавно начал изучать Scala. Для тех, кто еще не в курсе, что это за язык, небольшая выдержка с официального сайта:

Scala — лаконичный, элегантный и статически типизированный язык программирования, который сочитает в себе возможности обьектно-ориентированного и функционального языка. Scala полностью совместима с Java.

Сегодня я хотел бы показать вам, как, используя богатые выразительные способности этого языка, решить проблему, актуальную для любого более-менее крупного проекта, а именно работу с зависимостями компонентов или dependency injection. Последние несколько лет я использовал spring ioc для решения этой проблемы, однако у этого фрэймворка есть несколько недостатков, самый очевидный из которых это сборка приложения из компонент в runtime и наличие xml-дескрипторов (да, конечно можно использовать и autowiring и аннотации, но и у этих возможностей есть свои серьезные проблемы).
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры13.1K
Комментарии 2

Unity Auto Registration

.NET

Unity Auto Registration


Unity Auto Registration расширяет возможности Unity контейнера, предоставляя fluent interface для автоматической регистрации типов по установленным правилам. Используя всего несколько строк кода вы можете отсканировать указанную сборку и зарегистрировать все соответствующие указанным правилам типы.

Читать дальше →
Всего голосов 35: ↑21 и ↓14 +7
Просмотры1.7K
Комментарии 9

Как подружить ASP.NET Controls и DI-контейнер

.NET

Интро

В последнее время решил немного освежить свои знания в ASP.NET, в связи с чем углубился в процессы генерации кода контролов по разметке (*.ascx, *.aspx) и обнаружил что можно делать очень интересные решения, о которых  о хочу поведать. Итак сегодня мы узнаем, как подружить наш Dependency Injection контейнер с генерируемым контролами кодом.
Читать дальше →
Всего голосов 30: ↑18 и ↓12 +6
Просмотры1.4K
Комментарии 12

Реализуем DI-контейнер на PHP5 с помощью Reflections

Чулан
Этот топик для тех, кто представляет, что такое DI (Dependency Injection) но никогда не задумывался «как оно там унутре все работает».
Прочитать, что такое DI, можно например тут или тут

Не ставилось целью разработать свой Production DI-фреймворк. Хотелось разобраться как можно реализовать подобную функциональность наиболее удобно (Phemto, упомянутый выше, показался менее удобным, чем, например, способ от Microsoft Unity)

Реализованный вариант конфигурируется в коде (не через XML, как некоторые другие реализации, хотя это кому как удобнее).
Каждый используемый тип должен быть предварительно зарегистрирован, но не надо перечислять его аргументы, как например в Phemto — контейнер сам выяснит типы аргументов конструктора через Reflection.

Посмотреть код реализации...
Всего голосов 8: ↑4 и ↓4 0
Просмотры390
Комментарии 4

Управление зависимостями в коде

Разработка веб-сайтов
Я рассмотрел, как эволюционировал подход к управлению зависимостями в коде. Какие проблемы возникали на каждом этапе и как эти проблемы решались. Возможно на каком-то этапе вы узнаете свой проект и поймете куда двигаться дальше.

Основные темы:




Исходники проекта
Всего голосов 50: ↑40 и ↓10 +30
Просмотры4.6K
Комментарии 39

Symfony Components, Event Dispatcher (теория, часть 2)

Symfony
Перевод
image
Привет. Это вторая часть перевода документации по Symfony компоненту Event Dispatcher, первая часть здесь. Вторая часть перевода представляет собой сборник общих рецептов по использованию компонента Event Dispatcher. Для тестирования приведенных примеров не нужно подключать фреймворк Symfony — как отмечалось в первой части, компоненты независимы от фреймворка. Еще раз хочу отметить, что код Symfony компонентов сейчас перерабатывается для использования с Symfony 2 (PHP >= 5.3.2). Данный перевод относится к стабильной версии компонента Event Dispatcher. Но, насколько я понял из сравнения стабильной версии компонента с текущей под Symfony 2, — функционально они мало чем отличаются, то есть документация будет полезна и использующим новую версию компонента (PHP >= 5.3.2). Итак начнем.
Читать дальше →
Всего голосов 20: ↑16 и ↓4 +12
Просмотры3.9K
Комментарии 12

Тестирование контроллера в Symfony2

Symfony
Перевод
Предлагаю вашему вниманию перевод вчерашнего поста одного из разработчиков Symfony2 о подходе к unit-тестированию контроллеров в Symfony2. Тема очень актуальна для Symfony2 разработчиков. Также стоит отметить, что в посте упоминается результат дискуссии на dev-groups об использовании контроллера в роли сервиса в Symfony2.
Читать дальше →
Всего голосов 19: ↑15 и ↓4 +11
Просмотры8.1K
Комментарии 25

Антипаттерн settings.py

Python


Хабрапитонерам привет!

Время от времени я сталкиваюсь с паттернами разработки, которые существуют не потому что они хорошо решают какую-то проблему, а потому что так сделано в популярном фреймворке X, следовательно, думают многие — это хорошо.

Сейчас я хочу понегодовать на паттерн «все настройки — в settings.py». Понятно, что популярность он набрал благодаря Django. Я то и дело встречаю в проектах, никак не завязанных на этот фреймворк ту же самую историю: большая кодовая база, маленькие, хорошенькие никак не связанные друг с другом компоненты, и нате вам: все дружно из произвольных мест лезут в волшебный недомодуль settings за своими константами.

Итак, почему же такой подход на мой взгляд отвратителен.

Читать дальше →
Всего голосов 102: ↑86 и ↓16 +70
Просмотры12.5K
Комментарии 111

RoboGuice или «Андроид подсел на инъекции»

Разработка под Android
imageRoboGuice — это библиотека, которая позволяет пользоваться всеми преимуществами Contexts and Dependency Injection при разработке приложений на Андроиде.
Как несложно догадаться, RoboGuice основан на Google Guice.
Сразу оговорюсь, что в качестве перевода слова «injection» я буду использовать слово «инъекция».

Зачем колоться?


Думаю, что у многих читателей сразу возникнет вопрос: «Зачем эти сложности с CDI на мобильной платформе? Наверняка это всё занимает много места и медленно работает.»
Попробую убедить таких читателей в обратном, а именно в том, что CDI на мобильной платформе очень даже жизнеспособен и существенно облегчает жизнь разработчикам.
Читать дальше →
Всего голосов 39: ↑35 и ↓4 +31
Просмотры11.7K
Комментарии 23

Symfony2 Dependency Injection в разрезе

Symfony
Из песочницы
Из статьи можно узнать как стартует и работает приложение Symfony2. Мне бы хотелось продолжить цикл статей про этот современный фреймворк и уделить более пристальное внимание такому компоненту как Dependency Injection (DI — внедрение зависимости) так же известный как Service Container.
Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Просмотры31.8K
Комментарии 14

PostSharp. Отложенная загрузка зависимостей

.NET
Перевод
Кусок кода, представленный ниже, вы наверняка писали не один раз. А что более вероятно – десятки раз. Обычно это пишется, когда необходимо использовать некий репозиторий, который будет предоставлять данные для вашего приложения. Если у вас мало времени, и вы торопитесь, это отличный способ получить что-либо таким образом, что это будет загружено в память только тогда, когда это вам понадобится, но не раньше (например, операция сохранения повлекла за собой обращение к подсистеме сериализации, однако до этого она не была нужна). И ведь на самом деле получается, что этот кусок кода с одной стороны одинаков, а с другой – его приходится писать не один раз.
Как правило, я и многие программисты, предпочитаем использовать в данном месте IoC контейнер, чтобы решать задачи такого рода. Однако это не всегда так просто сделать, особенно когда я программирую в рамках отсутствия Dependency Injection в библиотеке, которую я использую (WinForms, WebForms, …). Давайте разберемся, почему решая эту задачу без использования PostSharp, вы потратите гораздо больше времени и проделаете больше работы.
Читать дальше →
Всего голосов 12: ↑8 и ↓4 +4
Просмотры1.7K
Комментарии 13

Получение экземпляра класса запроса по сигнатуре его интерфейса

.NET
Не так давно на Хабре была опубликована статья (ссылка на топик) моего коллеги AlexanderByndyu, описывающая уход от использования Repository в сторону применения связки QueryFactory + классы запросов Query. При этом в комментариях разгорелся весьма интересный диспут, касающийся целесообразности приведенного в статье решения. Было достаточно много интересных отзывов, среди которых особенно выделялись высказывания о том, что, дескать, QueryFactory не нужен и является лишней обузой, мешающей безболезненному добавлению, изменению и удалению классов запросов. В данной статье я хочу показать подход, который позволяет избавиться от применения QueryFactory, через активное использование IoC контейнера. Данную организацию работы со структурой классов запросов мы использовали в одном из наших недавних проектов, где в качестве IoC использовался Castle.Windsor.
читать далее
Всего голосов 23: ↑18 и ↓5 +13
Просмотры11.3K
Комментарии 25

IoC, DI, IoC-контейнер — Просто о простом

.NET
Из песочницы
Думаю сейчас слова IoC, DI, IoC-контейнер, как минимум у многих на слуху. Одни этим активно пользуются, другие пытаются понять, что же это за модные веяния.

На данный момент, на эту тему уже довольно сказано, написано, в том числе и на хабре, но как раз из-за обилия информации сложно найти действительно полезный контент. Кроме того, данные понятия часто смешивают и/или путают. Проанализировав множества материалов я решил изложить вам свое видение предмета.
Читать дальше →
Всего голосов 41: ↑31 и ↓10 +21
Просмотры325.6K
Комментарии 28

Aibolit для android

Разработка под Android
Из песочницы
Как же утомителен процесс инициализации UI при разработке android-приложений. Раз за разом приходится писать горы шаблонного кода: findViewbyId, setOnClickListener, getResources().getDrawable, … Возникает естественное желание переложить эту работу на плечи AOP. Беглый поиск готовых решений, адаптированных под android, навел разве что на RoboGuice, о котором уже упоминалось на хабре. Однако библиотека имеет значительный размер (~0.5 mb), что для многих приложений недопустимо много, и к тому же требует наследования ваших классов application и activity от RoboApplication и RoboActivity, чего не всегда хочется делать. Потому и появился Aibolit, легкая (~40kb), простая в использовании и функциональная библиотека, использующая dependency injection для инициализации UI на android.

Читать дальше →
Всего голосов 54: ↑52 и ↓2 +50
Просмотры2.4K
Комментарии 26

Почему в Perl так редко используется IoC, DI и магическая пилюля Kaiten::Container

Perl
Думаю многие понимают значение баззвордов Inversion of Control (Ioc) и Dependency Injection (DI). Если не очень, но интересно — на хабре было несколько статей на эту тему, очень познaвательно и доступно изложено.
Методики отличные, но применить их в настоящей жизни как-то не получалось.

Под катом — небольшой обзор плачевного состояния дел в Perl и самостийное «кажется» решение.
Читать дальше →
Всего голосов 17: ↑15 и ↓2 +13
Просмотры1.6K
Комментарии 56

Приезжай в Харьков и отожги вместе с нами на Ciklum Mobile Субботнике и iPhoneDevCamp 2012

Блог компании Ciklum
Вы не поверите, но начало 2012 года началось для нас жаркой зимой! Все дело в том, что мы, в Сиклум, ежемесячно проводим около 60(!) как внутренних, так и внешних мероприятий для разработчиков, таких как тематические Сиклум Субботники, Хакатоны, кемпы и т.д.

Обмен опытом и знаниями, живые дискуссии и неформальное общение — вот цель таких мероприятий, на которые, кстати говоря, может прийти любой разработчик. И представьте себе, такой формат мероприятий пришелся по душе многим в разных городах в Украине! Например, недавно мы провели самый первый .NET Субботник в Виннице, а также очередной .NET Субботник в Харькове, поддержали DOU STARTUP MIXER и Drupal Cafe в Киеве.

11 февраля 2012 в рамках Мобильного Сиклум Субботника пройдет и iPhoneDevCamp 2012, который все так долго ждали! Таким образом, суббота в нашем харьковском офисе будет очень насыщенной. По нашей замечательной традиции, мы открыты к тем, кто хочет выступить. Так, на Мобильный Сиклум Субботник мы пригласили зубров мобильной разработки, отчаянных борцов за чистоту кода и ярых яблочников.

Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Просмотры1.4K
Комментарии 5

Поделись опытом и послушай Java-гуру на Сиклум Java Субботнике 11 февраля

Блог компании Ciklum
Мы снова открываем сезон Сиклум Субботников в Киеве! Наш прошлый Сиклум Java Субботник в столице Украины был настоящим фуррором — его посетили 150 человек! Видя такой интерес и учитывая пожелания встретиться вновь, мы решили повторить :) и организовать еще одно полезное и приятное мероприятие для всех, кто программирует или только собирается начинать работать на Java.

По традиции, мы приглашаем всех желающих бесплатно посетить Сиклум Java Субботник 11 февраля в нашем киевском офисе

Читать дальше →
Всего голосов 1: ↑1 и ↓0 +1
Просмотры3.2K
Комментарии 0