Wie kann sichergestellt werden, dass nur eine bestimmte Klasse eine Instanz einer anderen Klasse erstellt?

8

Wie kann ich die Instanziierung einer Klasse nur innerhalb einer bestimmten Klasse einschränken?

Ich möchte es nicht auf eine einzige Datei beschränken, daher ist der anonyme Namensraum für mich keine Option.

Bitte beachten Sie, dass ich die Deklaration der zu beschränkenden Klasse für die gesamte Welt sichtbar machen möchte, nur dass nur ein bestimmter Kandidat aus der ganzen Welt sie nur instanziieren kann.

Wie kann ich das erreichen?

    
Mariners 29.05.2017, 16:32
quelle

2 Antworten

5

Sie könnten das Hauptschlüssel-Muster übernehmen (das Beispiel stammt aus Rakete1111):

%Vor%

Das Muster erlaubt eine feingranularere Zugriffssteuerung, als restricted_t zu einem Freund von allowed_t zu machen und komplizierte Proxy-Muster zu vermeiden.

    
manlio 29.05.2017, 22:46
quelle
11

Benutze friend s! Wenn eine Klasse Foo ein Freund einer Klasse Bar wird, bedeutet dies, dass Foo auf die privaten Mitglieder von Bar zugreifen kann. Wenn Sie den / die Konstruktoren privat machen, kann nur Foo eine Instanz von Bar erstellen.

%Vor%     
Rakete1111 29.05.2017 16:41
quelle

Tags und Links