Pull to refresh

Comments 6

Создадим класс TDrawness

Что?

Инъекцией будет служить регистрация каждого класса унаследованного от TMsShape.

Это не инъекция, это регистрация.

А в каждом классе появилась строка о регистрации класса, например в классе TmsRectangle:

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

class function TmsDiagramm.AllowedShapes: RmsShapeList;
begin
 Result := TmsRegisteredPrimitives.Instance.Primitives;
end;


А это — не DI, это типичный пример ServiceLocator, паттерна строго обратного DI.

У вас какое-то очень странное понимание DI. Давайте начнем с простого вопроса — что в вашем примере зависимость, а что — потребитель?
Да, Вы действительно правы, по поводу DI и ServiceLocator. Наиболее понятная статья, которую я нашел на просторах рунета, расставляющая все точки над i — blog.byndyu.ru/2009/12/blog-post.html
Просто читайте Симана, у него по этому поводу все очень хорошо сказано.
Зачем столько кода? Вполне хватило бы последней картинки и ссылки на репозиторий.
Присоединяюсь. Почему еще весь быдлокод оформлен отступом с одним пробелом? Поначалу подумал даже, что стили на Хабре поехали, аж в редактор пришлось вставлять для проверки.
Эта, рожденная «эффективными менеджерами», «рыжая обезьяна» убила «дельфийского оракула». Никогда не прощу!
Sign up to leave a comment.

Articles