내 지오메트리 컬렉션에 멋진 디자인 패턴을 구현하는 깔끔한 방법을 찾고 있습니다. 바로 지금 내 기하학 유형 계층 구조의 맨 위에 Geometry
이라는 특성이 있습니다. 아이디어는 모든 지오메트리가 특성을 상속하도록 한 다음 특정 지오메트리 유형에 대한 특정 코드를 구현하는 것입니다. 기하학적 객체로서 이러한 형상은 다양한 방법을 구현해야합니다. 예를 들어 다른 지오메트리와의 거리를 계산하는 기능을 예로 들어 보겠습니다.이 점을 distanceTo
이라고합니다. 이해야 할 가장 깨끗한 방법은 지금처럼 Geometry
특성의 방법을 가지고 :기하학 유형 계층 구조에 대한 깔끔한 디자인 패턴
def distanceTo(geometry : Geometry) : Double
내 문제는 이것이다 : 내가 입력하지 않고도 기하학에서이 방법 (말하는 Rectangle
)를 구현하려면 어떻게 존재하는 모든 도형에 대해 확인 하시겠습니까? 요청을 개별 지오메트리에 위임 할 수있는 편리한 방법이 있습니까?
건배, 스칼라 이후
"이중 발송"과 "방문자 패턴"을 찾아 볼 수 있습니다. 이러한 것들이 N^2 또는 그와 유사한 함수를 구현할 필요가 없도록 해줄뿐입니다. 그들은 일을 좀 더 쉽게 만들고 더 체계화 된 방식으로 해줍니다. –
double dispatch와 visitor 패턴은 Java와 같이 언어 수준의 여러 디스패치 * 패턴 매칭이 부족한 언어로이를 수행하는 좋은 방법입니다. 그러나 방문자 패턴은 상당히 복잡하고 많은 상용구 코드가 필요합니다. –