복합 패턴의 기본 클래스 인 Item 클래스가 있다고 가정합니다.복합 패턴의 특정 복합 데이터에 액세스
나는 영화와 음악이 서로 다른 데이터를 포함하는 두 가지 특정 서브 클래스가 있습니다
- 영화 : 감독, 제작자, 배우의 목록을 ...
- 음악 : chanteur, 판매 기록의 수 ... 을
클라이언트 코드에서 (예를 들어) 영화 데이터에 액세스하려면 getProducer()가 Item 클래스의 메서드가 아니기 때문에 이에 상응하는 Item을 다운 캐스팅해야합니다.
나는 세 가지 방법 사이에 끼 었어 :
- 이 항목 인터페이스의 모든 서브 클래스의 방법을 넣어
- 다른 항목에서 데이터를 추출 할 클라이언트 코드
- 를 사용하여 객체에서 내리 뜬 항목 이 클라이언트 항목의 서브 클래스를 숨 깁니다 때문에 세 번째 명제는 재미있는 것 같다
(방문자 패턴의 종류를 사용),하지만 난 클라이언트 UPDAT 수 있도록하는 방법을 모른다 항목 (예 : 영화 제작자 변경).
응용 프로그램에서 지원하는 Item 서브 클래 싱 유형은 릴리스를 거쳐 증가 할 것이므로 이러한 유형 추가를 용이하게하기 위해이를 디자인하려고합니다.
어쩌면 나는 완전히 잘못된 방향으로 가고 있으며 다른 더 나은 해결책이있을 것입니다.
당신은 옵션 3을 사용하여 데이터 객체를 사용하여 아이템을 업데이트하고 그것을 파싱 (Item 서브 클래스에서 적절한 setter를 호출) 할 수 있다고 말했습니까? 당신이 옳다고 생각하고 다운 캐스트를 사용하면 두통이 줄어들 것입니다! 그렇게 하기엔 너무 끔찍한 방법이 아니길 바랍니다. – zelus