C++ Singleton-Klassen - Vererbung gute Praxis

In einem vorhandenen Projekt, ich bin Erben eine Controller-Klasse (MVC) - deklariert als Singleton zu definieren, meine eigene Behandlung. Wie angemessen Ableitung dieser Singleton-Klasse?

Erste, die ich erweitern auf den Kontext und die Notwendigkeit für dieses Erbe.

Die Anwendung, die ich Hinzugefügt, um die vorhandene software nutzen will, ein MVC-Modul, das führt fast dieselbe Aufgabe wie die, die ich bereit bin zu führen. Es nutzt die gleichen Methoden, bis auf die Unterschrift und leichten Modifikationen. Umschreiben von meinem eigenen MVC-Modul ist endgültig Duplizierung von code. Das vorhandene Modul ist an und orientiert auf dessen Anwendung zu einem anderen Teil der software, und ich kann einfach nicht verwenden das gleiche Modul. Aber ist geschrieben, wie eine Model-View-Controller-Muster, bei dem Controller ist Singleton. Ich abgeleitete Ansicht schon.

Zweitens habe ich Zweifel, dass ich ja klassisch ableiten Singleton-Klasse.

Aufruf Konstruktor von der Klasse geerbt würden, rufen Sie einfach getinstance() für übergeordnete Klasse und nicht wieder ein Objekt aus der abgeleiteten Klasse (?).

Dritte, ist es, wie ich sehe einige Weg, damit umzugehen. Bitte kommentieren/helfen mich zu verbessern!

Kopiere ich die ganze Singleton-Klasse in einer Klasse, die ich nennen könnte AbstractController. Ich leite diese Klasse zweimal. Das erste Kind, singleton-und nimmt die ganze Behandlung der übergeordneten Klasse. Das zweite Kind ist der Controller für meinen Teil der Anwendung, mit der eigenen Behandlung neu definiert.

Dank!

  • Für die meisten Teil, wenn eine Klasse eine Basis-Klasse, die singleton ist, dann ist es völlig nutzlos: man kann nie schaffen, alle Instanzen der abgeleiteten Klasse, da jede solche Instanz würde auch eine Instanz der Basis-Klasse, und du bist nicht erlaubt, um eine weitere einer von denen. (Kann ich mir vorstellen "angemessenen" Ausnahmen, aber nur in dem Fall, wo die Basis-Klasse wurde entwickelt, speziell mit der Idee abgeleitet wird, in den Sinn....)
InformationsquelleAutor kiriloff | 2012-02-21
Schreibe einen Kommentar