Вы идете по правильному пути. Хорошее начало. На нем есть хороший article от Martin Fowler.
Но ключ ищет основную причину, по которой мы делаем этот путь. В основном нам нужно отделить конфигурацию объектов от их использования. то это даст вам гибкость для изменения в зависимости от бизнес-правил.
Например, если у вас есть класс Employee и Employee Class, у вас есть метод CalculateBonus и этот метод, используя класс BonusCalculator для вычисления бонуса. Если в классе компании используется Employee.CalculateBonus для подсчета бонуса, то ответственность за класс Bonus за класс BonusCalculator лежит на классе Employee и передается классу Employee с помощью метода, свойства или через конструктор.
Дни оплаты, отпуск и т. Д. Поступают из класса Занятия, а BonusCalculator является внешним по отношению к классу Employer, поэтому мы делегируем инициализацию ответственности BonusCalculator вызывающему классу.
Этот способ завтра изменит тип изменения BonusCalculator, это не повлияет на класс Employee.
Надеюсь, это помогло вам более четко понять концепцию.
Вы даже посмотрели тег [зависимость-инъекции] (http://stackoverflow.com/tags/dependency-injection/info)? – Steven