Абстрактный класс — это родительский (базовый) класс, который не может быть использован для создания объектов — примерно такое описание можно найти в различных справочниках. Абстрактный класс похож на интерфейс, но, несмотря на схожие свойства, у них разные области применения.

В этой статье я попробую объяснить, что представляют собой шаблоны проектирования, какие дают плюсы и чем могут навредить, а навредить они могут не меньше, чем помочь.

Контейнер внедрения зависимостей – это объект, который предназначен для создания других объектов со всеми необходимыми зависимостями. Под “зависимостями” понимаются другие объекты, которые должны быть созданы перед созданием желаемого объекта.

Под «интерфейсом» в языках программирования обычно понимают обязательство класса по реализации функционала (набора методов), который описан в интерфейсе.