Quale modello di progettazione è più adatto in questo contesto?

1

Ho una classe base di Shape e classi drived Line Segment, Arc, B-spline, ... Voglio trovare il punto di intersezione tra queste forme. Vorrei:

Shape* a = new LineSegment();
Shape* b = new Arc();

bool did_intersect = a->Intersect(b);

Non mi piace questo disegno in Intersect:

bool LineSegment(Shape* s) {
  Arc* arc = dynamic_cast<Arc*>(s);
  if (NULL != arc)
    return LineSegmentArcIntersection(this, arc);

  BSpline* bspline = dynamic_cast<BSpline*>(s);
  if (NULL != bspline)
    return LineSegmentBSplineIntersection(this, bspline);
  ...
}

Quindi, quale design pattern è più adatto in questo contesto?

    
posta Hieu Phan 27.10.2010 - 17:33
fonte

1 risposta

6

Penso che tu stia cercando doppia spedizione o dispatch multipli .

Btw., questa domanda è più adatta per StackOverflow.

    
risposta data 27.10.2010 - 17:37
fonte

Leggi altre domande sui tag