하나의 오브젝트가 수신 한 호출을 다른 오브젝트로 전달하는 데 복합 패턴을 사용하고 싶습니다.다른 유형의 오브젝트를 가진 복합 패턴
현재 수신단의 객체는 모두 Abstract
유형이지만, 구체적 유형에 따라 매개 변수로 다른 유형의 objet를 선택적으로 허용한다는 점이 다릅니다 (다른 모델로 생각하십시오). 내가 볼 수있는
는 지금까지, 두 가지 솔루션이 있지만 어느 쪽도 만족 :
- 사용이 instanceof를 입력 측의 클래스 형의 물체를 감지 할 수 있습니다. 이것은 종종 나쁜 습관이라고합니다.
- 많은 입력 유형으로 을 만듭니다. 이는
List
이 새로운 입력 유형을 수용하기 위해 추가되어야하고 각List
이 차례대로 명시 적으로 처리되어야한다는 문제점을 야기합니다.
저는 인터페이스 측면에서 생각해 왔지만 아직 실현 가능한 아이디어를 내놓지 않았습니다. 이 설계 문제에 대한 해결책은 무엇입니까? 합성물은 전혀 적합합니까?
P.S : 이것은 mvc의 컨텍스트에 있습니다.
예, 그렇기 때문에 합성물도 볼 수 있습니다. 필자가 묘사 한 것에 대해 커맨드 객체의 타입에 따라 Command 객체를 무시하도록하는 방법이 될 것입니다. 객체는 여전히 같은 메소드를 사용하여 전달되지만'Command' 내부에서'instanceof'를 사용하도록 되돌려줍니다. –
구체적인 클래스 내에 여러 개의 오버로드 된 메서드 서명과 해당 구현을 포함 할 수 있습니다. 그게 당신이 필요로하는 것을 할 수 없습니까? – duffymo
글쎄, 그것에 대해 생각하고, 내가 뭘하려고하는지 그 크기에 따라 항목을 분리하는 공장에서 사용되는 선택 프로세스와 아이디어가 비슷합니다 (체 생각하세요). 다른 오버로딩 된 메소드가 이상적이지만 약간의 유연성을 허용 할 수있는 Object 유형이 장애물입니다. 어쩌면 나는 너무 열심히 생각하고 있고 더 간단한 접근법이있다. 내가 생각한 또 다른 것은 ClassCastException을 무시하고 참조가 null이 아닌 경우에만 작업을 수행하여 객체를 캐스팅 할 가능성이 있다는 것입니다. –