Ладно, попробую тогда объяснить. Вот смотри, у тебя есть контроллер, в конструкторе которого вызывается инстанцирование класса Client. Это хардкод, ты жёстко указал, что контроллер зависит от этого класса, вместо того, чтобы такой зависимости не было, согласно принципу. Следовало бы использовать интерфейс или абстрактный класс.