我正在编写一个程序,我正在使用工厂模式。我有一个名为 AssetFundCalculator 的接口和一个名为 AssetFundCalculatorImpl 的类,它实现了接口。
AssetFundValidator 类验证某些输入,并且能够实例化有效的 AssetFundCalculatorImpl 。
我想如果程序的其余部分只知道接口,而不是 AssetFundCalculatorImpl ,那么只有 AssetFundValidator 可以实例化它。 / p>
我的包结构如下所示:
在Java中,我会将包可见性修饰符赋予 AssetFundCalculatorImpl 类,或者它的构造函数,它会解决问题,但在Kotlin中,没有包可见性修饰符。
有解决方案吗? 我不想将此代码放入单独编译的模块中,因此内部修饰符无效。
答案 0 :(得分:4)
您可以将AssetFundValidator
和AssetFundCalculatorImpl
放入同一文件,并将AssetFundCalculatorImpl
标记为private
。在这种情况下,只能访问同一文件中的代码,包括AssertFundValidator
,但不能访问程序其他部分的任何代码。