좋아, 내가 작은 PHP 응용 프로그램을 만들고있어. 현재 구조는 다음과 같습니다.개체 및 종속성을 공유하는 잘못된 OO 아키텍처가 있습니까? 어쩌면 나는 여기에 디자인 패턴을 놓친거야?
$client = new AppName\Client;
$model = $client->getModel();
$model->getNode();
모든 것이 여기 아름답습니다. 클라이언트는 Socket을 통해 명령을 연결하고 실행하는 작은 C 응용 프로그램을 담당합니다. 나는 여기서 건축으로 놀고있다. Client :: getModel은 Model의 인스턴스를 반환합니다. getModel 동안 나는 생성자를 통해 Model 내부에 Client를 삽입한다. 이런 식으로 뭔가 :
public function getModel()
{
return new Model('parameter', $this);
}
가 어느 차례로 ...
// Model
public function __construct($param, Client $client)
{
$this->setClient($client);
// ...
}
그러나, 모델 ::는 getNode 동안, 난 노드의 인스턴스를 반환합니다. 그러나 getModel과 달리 Client를 다시 삽입하고 싶지는 않습니다. 하지만 내가해야 해. 지금 당장이 작업을하고 있습니다.
public function getNode()
{
return new Node('parameter', $this->getClient());
}
나는 이것이 틀린 것 같습니다. 내가 빠뜨린 뭔가가 있어야합니다 ... 나는 Dependency Injection을 이해하고 사용하지만, Dependency Injection Container가 내 문제를 해결하지 못할 것이라고 확신합니다.
하나의 간단한 방법은 모달을 확장하고 노드를 만드는 것입니다. 즉. 다음과 비슷한 : class node modal {}이 방법을 사용하면 노드의 공용/보호 된 모달 모드에 액세스 할 수 있습니다. – KoolKabin
무엇이 당신의 질문입니까? 디자인은 나를 위해 괜찮아 보이는 – ivowiblo
클래스 계층 구조는 종속성과 아무 관련이 없어야합니다. – vinnylinux