Die Codebase, die ich zur Arbeit mit übergeben wurde, verfügt über eine Datenbankklasse, die von MDB2 erbt. Dies bildet die Grundlage für das verwendete MVC-Framework (eine benutzerdefinierte Build-Affäre) und die Modelle wiederum erben von db.Ändern einer Klasse zum Einkapseln statt Erben
Wie einige von Ihnen sicher bemerkt haben, führt dies zu einem ziemlich großen Problem. Jedes Mal, wenn Sie ein Modell instanziieren, wird eine neue Datenbankverbindung erstellt. Dies ist offensichtlich ziemlich verschwenderisch. Es bedeutet auch, dass ich Transaktionen nicht wie vorgesehen verwenden kann. Wenn eine Transaktion in einer Instanz eines Modells startet, sind ihre Auswirkungen für die anderen Instanzen unsichtbar, bis eine Festschreibung erfolgt.
Mein Plan ist es, die db-Klasse so zu ändern, dass sie MDB2 einkapselt, anstatt von ihr zu erben, und dann eine einzelne Instanz von MDB2 über ihre Singleton-Funktionalität pflegen zu lassen.
Allerdings ist MDB2 eine große Bibliothek mit vielen Methoden, und viele Dinge, die höher in der Code-Basis sind, hängen davon ab, auf MDB2-Methoden zugreifen zu können.
Gibt es eine Möglichkeit, die MDB2-Klasse einzukapseln und Aufrufe an sie zu übergeben, ohne die höheren Ebenen zu ändern und ohne eine Wrapper-Methode für jede Methode in MDB2 schreiben zu müssen?
können Sie ein Beispiel Modellklasse zeigen, bitte, wir können so sehen, inwieweit sie gekoppelt sind? – Gordon