기본적으로 I Geometry
라는 기본 클래스, 일부 파생 상품 등 Point
, Polygon
, 등등 ...디자인 문제는 기본 클래스는 알고 그 유도체
Geometry
이 같은 방법 교차로 구현하고 있습니다
Geometry* intersection(Geometry* other)
{
Geometry* inter = compute_intersection(this, other);
if (inter is a polygon)
return new Polygon(inter);
if (inter is a point)
return new Point(inter);
}
을 내 프로그램의 두 기하학의 교차를 계산하면
, 나는 Geometry*
얻고 난 정말 무엇이든에 dynamic_cast
수 있습니다.
좋은 디자인입니까? 내가 생각하기에 잘못된 것은 교차점을 계산할 때마다 실제 유형을 확인하고 그 결과를 dynamic_cast (느려질 수 있음)해야한다는 것입니다. 하지만 내가 생각하는 주된 문제는이 디자인에서 Geometry
은 파생물 (점, 폴리 라인 등)을 알아야한다는 것입니다.
이러한 문제를 피하기위한 좋은 해결책은 무엇입니까?
추상 팩토리 디자인 패턴이 필요합니다. –
@Als 그것은 순수한 공장이 아니지만 이미 구현했습니다 ... –
이 코드는 어떻게 생겼습니까? 나는 당신이 전체 이야기를하지 않았다고 느낀다. –