Por que não “instanciar um novo objeto dentro do construtor de objetos”?

Eu respondi uma pergunta (ligação) que usei uma criação do novo objeto no construtor de outra classe, aqui o exemplo:

class Person {
  public $mother_language;

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

E eu tenho o comentário do usuário "Matija" (o perfil dele) e ele escreveu:Você nunca deve instanciar um novo objeto dentro do consturctor de objetos, as dependências devem ser empurradas de fora, então qualquer um que usa esta classe sabe do que esta classe depende!

Geralmente, posso concordar com isso e entendo seu ponto de vista.

No entanto, eu costumava fazer isso dessa maneira com muita frequência, por exemplo:

como as propriedades privadas outras classes me dão funcionalidade que eu posso resolver não duplicar o código, por exemplo posso criar uma lista (implementação de classeArrayAccess (interface) de objetos), e essa classe seria usada em outra classe, que possui tal lista de objetos,algumas classes usam por exemploDateTime objetos,se euinclude (ou autoload) classe dependente, não se deve ter nenhum problema com erros,

porque objetos dependentes podem ser um número muito grande, passando todos eles para o construtor de classe pode ser muito longo e não claro, exemplo

$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, ...............);

como eu nasci em Pascal, depois em Delfos, tenho alguns hábitos de lá. E em Delphi (e FreePascal como seu concorrente) esta prática é muito frequente. Por exemplo, existe umTStrings classe que lida com array de strings, e para armazená-las ele não usaarrays mas outra classe,TList, que fornece alguns métodos úteis, enquantoTStrings é apenas algum tipo de interface. oTList objeto é privado declarado e não tem acesso de fora, mas os getters e setters doTStrings.

(não é importante, mas algum motivo) geralmente eu sou o único que usa minhas aulas.

Por favor, me explique, é realmente importante evitar a criação de objetos em construtores?

Eu liesta discussão mas ainda não tem mente clara.

questionAnswers(6)

yourAnswerToTheQuestion