Итак, цитата исходит из "Injection Dependency in.NET" . Имея это в виду, является ли следующий класс неправильно разработанным?
class FallingPiece { //depicts the current falling piece in a tetris game
private readonly IPieceGenerator pieceGenerator;
private IPiece currentPiece;
public FallingPiece(IPieceGenerator pieceGenerator) {
this.pieceGenerator = pieceGenerator;
this.currentPiece = pieceGenerator.Generate(); //I'm performing work in the constructor with a dependency!
}
...
}
Итак, этот класс FallingPiece
несет ответственность за контроль текущей падающей части в игре с тетрисом. Когда кусок попадает на дно или в другое место, возникает сообщение о событии, которое затем через factory генерирует еще одну новую фигуру, которая снова начинает падать сверху.
Единственная альтернатива, которую я вижу, это иметь метод Initialize(), который будет генерировать часть, но IMO, которая немного противоречит идее о том, что конструктор помещает ваш объект в допустимое состояние.