私は工場パターンを使用しているプログラムを書いています。私は、というAssetFundCalculatorというインターフェイスと、このインターフェイスを実装するAssetFundCalculatorImplというクラスを持っています。Kotlinのパッケージに相当する可視性修飾子
AssetFundValidatorクラスには、いくつかの入力を検証し、有効なAssetFundCalculatorImplをインスタンス化することができます。
のみAssetFundValidatorがそれをインスタンス化することができるようにプログラムの残りの部分だけで、インターフェースについて、そしてないAssetFundCalculatorImplについて知っているだろう場合、私はしたいと思います。
私のパッケージ構造は次のように探しています:Javaでは
、私はAssetFundCalculatorImplクラス、またはそれのコンストラクタにパッケージの可視性修飾子を与えるだろう、それは問題を解決するだろうが、中Kotlinには、パッケージ可視性修飾子はありません。
これに対する解決策はありますか? このコードを個別にコンパイルされたモジュールに入れたくないので、内部修飾子は機能しません。
きれいではありませんが、少なくとも機能しています。 – LordScone
私はこのソリューションを使用していませんでしたが、実際には2つのクラスを1つのファイルに入れるのは嫌です。パッケージ修飾子をその言語から除外した理由は何ですか? – LordScone
あなたは1つのファイルに複数のクラスを入れることに慣れるべきです。それはKotlinの非常に一般的なパターンです。パッケージのローカル可視性は含まれていませんでした。なぜなら、モジュールのユーザーはモジュールが使用するパッケージと同じパッケージにクラスを作成し、そのモジュールのパッケージローカル部分にアクセスできるからです。 – yole