Designentscheidung



  • Hallo,

    ich habe ein Framework (openCV) und möchte für ausgewählte Operationen eigene Implementierungen verwenden. Beispielsweise soll dann ein Filter Operationen überspringen können. Einen eigenen Filter zu erstellen ist dabei zu aufwendig, denn aus den vielen hundert Zeilen Code würde ich nur eine ändern wollen. Zudem geht es um mehrere weitere Klassen. Es soll zur Laufzeit zwischen mehreren Implementierungen gewechselt werden können.
    Außerdem soll die Schnittstelle beibehalten werden.

    Die filter-Methode könnte also ungefähr so aussehen:

    // Mat repräsentiert eine Matrix
    Mat cv::filter(Mat mat_a,Mat mat_b, ...) {
    [...]
    Mat result;
    if(getOperationen("cv::filter") != NULL) {
    result = getOperationen("cv::filter")->add(mat_a, mat_b);
    } else {
    result = mat_a+mat_b;
    return result;
    }
    }
    

    Die Methode "getOperationen" hat als Parameter eine String-ID, um verschiedene Konfigurationen an unterschiedliche Methoden zuweisen zu können.

    Wie lässt sich das am besten Implementieren? Durch ein Singleton? Oder gibt es besser geeignete Möglichkeiten?

    Vielen Dank!


Log in to reply