현재 종속성이 밀접하게 연결된 클래스가 있으며 클래스 생성자에는 현재 매개 변수가 없습니다. 나는 선택적으로 생성자 서명을 변경하지 않고 다른 종속성을 전달할 수 있기 때문에 현재 클래스를 사용하는 응용 프로그램을 중단 할 수 있습니다. 종속성 삽입의 기본값
나는이 패턴 내놓았다 :class Car {
private $engine;
public function __construct($options = array()) {
if (isset($options['engine']) {
$this->engine = $options['engine'];
} else {
$this->engine = new Engine();
}
}
}
이 자동차는 여전히 new car()
로 (기본 엔진)이 생성 될 수있는 방법으로, 또는 사용자 정의 엔진에 전달하여 : new Car(array('engine' => new CustomEngine()))
합니다.
올바른 방법입니까? 이것이 유지 보수성에 어떤 문제점이 있습니까?
오른쪽 트랙에 있습니다! 의존성 주입은 정확히 이것입니다. – colburton
이게 http://stackoverflow.com/q/8295060/1767861과 관련이 있다고 생각하면 주어진 답을 읽어 주어야합니다 :) –