我正在编写一个使用工厂模式的程序。我有一个名为 AssetFundCalculator 的接口(interface)和一个名为 AssetFundCalculatorImpl 的类,它实现了该接口(interface)。
AssetFundValidator 类验证一些输入,并能够实例化一个有效的 AssetFundCalculatorImpl。
我希望程序的其余部分只知道接口(interface),而不知道 AssetFundCalculatorImpl,这样只有 AssetFundValidator 可以实例化它。
我的包结构是这样的:
在 Java 中,我会给 AssetFundCalculatorImpl 类或它的构造函数提供包可见性修饰符,这样可以解决问题,但在 Kotlin 中,没有包可见性修饰符。
有解决办法吗? 我不想把这段代码放到单独编译的模块中,所以 internal 修饰符不起作用。
最佳答案
您可以将AssetFundValidator
和AssetFundCalculatorImpl
放在同一个文件中,并将AssetFundCalculatorImpl
标记为private
。在这种情况下,它只能被同一文件中的代码访问,包括 AssertFundValidator
,但不能被程序其他部分的任何代码访问。
关于java - Kotlin 中的包等效可见性修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35550395/