Почему бы не «создать новый объект внутри конструктора объекта»?

Я ответила на вопрос (ссылка) что я использовал создание нового объекта в конструкторе другого класса, вот пример:

class Person {
  public $mother_language;

  function __construct(){ // just to initialize $mother_language
    $this->mother_language = new Language('English');
}

И я получил комментарий от пользователя "Matija" (его профиль) и он написал:Никогда не следует создавать экземпляр нового объекта внутри констурктора объекта, зависимости должны передаваться извне, поэтому любой, кто использует этот класс, знает, от чего зависит этот класс!

Вообще, я могу с этим согласиться, и я понимаю его точку зрения.

Тем не менее, я делал это очень часто, например:

в качестве личных свойств другие классы дают мне функциональность, которую я могу решить, не дублируя код, например, я могу создать список (реализация классаArrayAccess интерфейс) объектов), и этот класс будет использоваться в другом классе, который имеет такой список объектов,некоторые классы используют напримерDateTime объекты,Если яinclude (или автозагрузка) зависимый класс, не должно быть проблем с ошибками,

поскольку зависимых объектов может быть очень много, передача всех их конструктору классов может быть очень длинной и непонятной, например

$color = new TColor('red'); // do we really need these lines?
$vin_number = new TVinNumber('xxx');
$production_date = new TDate(...);
...
$my_car = new TCar($color, $vin_number, $production_date, ...............);

так как я «родился» в Паскале, то в Дельфах у меня есть некоторые привычки. И в Delphi (и FreePascal как его конкуренте) такая практика встречается очень часто. Например, естьTStrings класс, который обрабатывает массив строк, и для их хранения он не используетarrayс другой класс,TList, что обеспечивает некоторые полезные методы, в то время какTStrings это только какой-то интерфейс.TList Объект объявлен как частный и не имеет доступа извне, кроме методов получения и установкиTStrings.

(не важно, но по какой-то причине), обычно я тот, кто использует мои занятия.

Пожалуйста, объясните мне, действительно ли важно избегать создания объектов в конструкторах?

я прочелэто обсуждение но все еще неясно.

Ответы на вопрос(6)

Ваш ответ на вопрос