Ich schreibe ein Programm, in dem ich das Fabrikmuster verwende. Ich habe eine Schnittstelle namens AssetFundCalculator und eine Klasse mit dem Namen AssetFundCalculatorImpl, die die Schnittstelle implementiert.Paket gleichwertige Sichtbarkeitsmodifikator in Kotlin
Die AssetFundValidator Klasse überprüft, einige Eingaben, und ist in der Lage eine gültige AssetFundCalculatorImpl zu instanziiert.
Ich möchte, wenn der Rest des Programms nur über die Schnittstelle und nicht über den AssetFundCalculatorImpl, so dass nur die AssetFundValidator es könnte instanziiert wissen würde.
Meine Paketstruktur wird wie folgt aussehen:
In Java würde ich Paket Sichtbarkeitsmodifizierer zur AssetFundCalculatorImpl Klasse geben, oder es ist Konstruktor, und es würde das Problem lösen, aber in Kotlin, es gibt keinen Paketsichtbarkeitsmodifikator.
Gibt es dafür eine Lösung? Ich möchte diesen Code nicht in ein separat kompiliertes Modul einfügen, daher wird der interne Modifikator nicht funktionieren.
Nicht sehr sauber, aber zumindest funktioniert es. – LordScone
Immerhin habe ich diese Lösung nicht verwendet, ich mag es wirklich nicht zwei Klassen in eine Datei zu setzen. Was war der Grund dafür, dass der Paketmodifikator aus der Sprache weggelassen wurde? – LordScone
Sie sollten sich daran gewöhnen, mehrere Klassen in eine Datei zu legen, ein sehr häufiges Muster in Kotlin. Wir haben die Sichtbarkeit des Pakets nicht berücksichtigt, da dies keine gute Möglichkeit ist, etwas zu verbergen: Ein Benutzer eines Moduls kann Klassen in demselben Paket erstellen, das das Modul verwendet, und erhält somit Zugriff auf paketlokale Teile dieses Moduls. – yole