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?
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.
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.