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.
MindStream. Как мы пишем ПО под FireMonkey