2016-06-21 3 views
0

내가 최상위 수준을 의미하는 것은 프로그램의 최상위 레이어 중 하나에서 만들어진 객체입니다 (예 : main 함수). 저수준 객체는 다른 객체의 코드에서 아주 깊게 생성됩니다. 의는 otherTopLevelObject 우리가 lowLevelObject최상위 수준 개체를 하위 수준 개체로 전달하는 방법은 무엇입니까?

전화 할게 객체에 등등 자체가 다른 객체를 생성하는 객체를 생성하고 있다고하자, 이제

public static void Main(String[] args) 
{ 
    SomeClass topLevelObject = ... 
    SomeOtherClass otherTopLevelObject = ... 
} 

을 :

그럼 내 주요 기능은 다음과 같습니다 가정 해 봅시다

그러면 lowLevelObjecttopLevelObject이 필요한 경우 어떻게해야합니까? 이 문제를 해결하는 좋은 방법은 무엇입니까? topLevelObject은 생성자 트리를 따라 단순히 전달되어야합니까? 아니면 이런 경우를 완전히 피하는 것이 가장 좋습니다. 그렇다면 어떻게 피할 수 있습니까?

답변

0

일반적으로 lowLevelObjecttopLevelObject에 종속성을 생성하지 않으려합니다. 예를 들어 lowLevelObject이 데이터를 디스크에 저장하고 topLevelObject이 게임의 현재 상태 인 경우 lowLevelObject에 게임 상태를 해석하는 방법을 알리고 싶지 않을 것입니다. 대신, topLevelObjectSerialize과 같은 일부 인터페이스 또는 메소드를 구현할 수 있어야합니다. 그러면 lowLevelObject은 직렬화 된 데이터를 처리하는 방법을 알고 있어야합니다. 당신이 충돌 로깅을 구현하는 새로운 SomeOtherClass2을 만들

그런 식으로, 당신은 지금 충돌 데이터를 해석하는 방법을 알고 lowLevelObject을 수정할 필요가 없습니다. SomeOtherClass2에 대해 Serialize을 구현하십시오. lowLevelObject은 이미 처리 방법을 알고 있습니다.

+0

어쩌면 좀 더 구체적이어야합니다. 자바 스윙 창인 첫 번째 객체가 있습니다. 여기서 낮은 수준의 객체는 창 내부의 위젯입니다. 트릭은 윈도우 자체와 많은 멤버들이 특정 두 번째 객체가 필요하다는 것입니다. 어쨌든 통찰력에 감사드립니다. –

관련 문제