입자 전송 코드를 쓰고 있습니다. 이 코드에서 실제 객체는 인터페이스 볼륨을 구현합니다. Volume의 한 구현자인이 코드의 경우 Particle 클래스입니다. 제 설계에서 볼륨은 다른 볼륨을 가장 작은 Volume 구현자인 Particle까지 포함합니다. 파티클이 상호 작용이있는 볼륨을 통해 모니터되지 않은 상태로 날아 다니기를 원한다면이 작업이 효과적입니다.런타임 Java에서 오브젝트 유형을 판별해야합니다. 나쁜 디자인?
그러나 Particle detector에 대한 정보를 기록하는 Volume을 구현하려고 할 때 문제가 있습니다. Volume 인터페이스에는 Particle에있는 특별한 유형의 정보를 가져 오는 방법이 없습니다. Particle이 Detector Volume으로 나아가는 경우 볼륨에서 Particle으로 캐스트하고 Particle 메서드를 호출하기 전에 리플렉션을 사용하여 형식을 확인해야합니다. 일반적으로 (내가 본 것에서)이 유형의 것은 "나쁜 디자인"레이블로 표시됩니다.
볼륨 인터페이스의 볼륨 경계를 넘을 수있는 입자 만 만들 수 있습니다 (인터페이스를 특수한 경우 입자에 연결).하지만 코드에이 제한을 적용하고 싶지는 않습니다. 볼륨을 이동하고 나중에 참여하도록 허용 할 수 있습니다.
이렇게 나쁜 디자인처럼 들리니? 이 문제를 해결할 또 다른 확실한 방법이 있습니까? 필요한 경우 코드를 첨부 하겠지만 일반적인 문제는 내 세부 정보와는 독립적으로 보입니다 (그리고 언어와는 상당히 독립적입니다).
미리 감사드립니다. 나는 여기에 대한 모든 지식을 정말로 고맙게 생각한다.
볼륨에 다른 볼륨이 있음을 알리고 싶지 않았기 때문에 특별한 인터페이스를 만들고 싶지 않았습니다. – user487100