Рубрика «ioc» - 3

Привет. Приступим.

Мотивация

  1. Есть проект с Entity framework (>= 5.0.0.0) code first.
  2. Вы любите IoC, но не любите бесконечные регистрации новых сущностей.
  3. В качестве контейнера используется Unity (или есть возможность потратить 10 минут на допиливание исходников под свой контейнер).
  4. Перспектива написания однотипного кода почему-то отпугивает вас.

Итак, что предлагает эта статья. Вы подключаете 2 nuget-пакета, реализуете для своих Entity простой интерфейс IRetrievableEntity<TEntity, TId> (можно упростить задачу, отнаследовавшись от готового класса Entity<TId>), добавляете в код 2 строки регистрации и получаете на выходе полную независимость от DBContext и возможность резолвить репозитории для каждой IRetrievableEntity-сущности с возможностью построения объектно-ориентированных (типизированных) запросов к этим репозиториям. Только посмотрите:

var employeeRepository = container.Resolve<IRepository<Emloyee, int>>();
var employees = employeeRepository.Get(q =>
{
    q = q.Filter(e => e.EmploymentDate >= new DateTime(2014, 9, 1));
    if(excludeFired)
        q = q.Filter(e => !e.Fired);
    q = q.Include(e => e.Department, p => p.Department.Chief)
            .OrderBy(p => p.FirstName);
});

Как быстро начать использовать

Читать полностью »

Инверсия управления (Inversion of Control) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах (“Википедия”).

Простой как Pimple, мощный как Symfony DI

Syringe — простой IoC Container написанный на PHP с большим количеством возможностей и декларативной конфигурацией.

В нем реализованы: внедрение параметров, фабричные методы, основные виды инъекций, в том числе и через интерфейс, области видимости, внедрение тега и триггеры.

Далее возможности расписаны более подробно.
Читать полностью »

Снижение компонентной связности кода С++
Избавляемся от недостатков классического ООП и пишем на С++ в модульном стиле.
Читать полностью »

В своих двух предыдущих статьях я рассказал о Dependency Injection и IoC контейнере, и о том, как они работают конкретно в Laravel. Данный пост будет посвящен практическому применению DI и IoC на реальном примере. А так же, какие все таки преимущества нам дают эти два прекрасных инструмента и паттерна в приложении.

Читать полностью »

Контроль покрытия кода при unit тестировании в Windows Phone
Приветствую читателей!
Хочу поделиться своими достижениями в налаживании контроля покрытия кода при модульном тестировании приложений под Windows Phone. Примечательно, что при решении этой задачки пришлось столкнуться с некоторыми аспектами «правильного» проектирования приложений. Поэтому этот пост можно рассматривать как небольшое учебное пособие.

Постановка задачи

Дано:
Начинается разработка небольшого приложения под Windows Phone. Приложение типовое — забирает какие-то данные со своего сервера и в каком-то виде их показывает пользователю.
Требуется:
Спроектировать архитектуру приложения так, чтобы при непрерывной интеграции максимум кода приложения, отвечающего за логику работы, был закрыт тестами с возможностью контролировать это покрытие.
Читать полностью »

В этой статье я расскажу о том как создать легко расширяемую, модульную структуру. Подобная организация используется в Symfony. Так же мы будем использовать Composer. Что это такое и как его использовать можно почитать тут.
Читать полностью »

в 16:38, , рубрики: ioc, java, spring, метки: , ,

Часто на собеседовании на вопрос: «Что такое Spring?» приходится слышать «Это какой-то набор библиотек». В принципе отвечающий прав. Но для устройства на работу надо знать, какой именно. В этом небольшом очерке попытаюсь доступно и доходчиво описать, что собой представляет контейнер IoC из Spring Core, c которого надо начинать знакомство со Spring.
Читать полностью »

Доброго времени, уважаемые читатели!

Для смартфона оптимальность архитектуры приложений особенно важна, поэтому я решил провести сравнение по производительности бесплатных и открытых библиотек контейнеров, доступных для Windows Phone.
Удостоились внимания следующие библиотеки (самые последние версии на момент тестирования):

Autofac 2.5.2
Caliburn.Micro v1.3.1 (компонент SimpleContainer)
Funq 1.0
MicroIoc 1.0
Ninject 2.2.1
TinyIoC

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js