我正在编写一个使用工厂模式的程序。我有一个名为 AssetFundCalculator 的接口(interface)和一个名为 AssetFundCalculatorImpl 的类,该类实现了该接口(interface)。
AssetFundValidator 类可验证某些输入,并能够实例化有效的 AssetFundCalculatorImpl 。
我想让程序的其余部分只知道接口(interface),而不知道 AssetFundCalculatorImpl ,以便只有 AssetFundValidator 可以实例化它。
我的包裹结构看起来像这样:
在Java中,我会将包可见性修改器赋予 AssetFundCalculatorImpl 类,或者它是构造函数,它将解决此问题,但是在Kotlin中,没有包可见性修改器。
有针对这个的解决方法吗?
我不想将此代码放到单独编译的模块中,因此内部修饰符将无法工作。
最佳答案
您可以将AssetFundValidator
和AssetFundCalculatorImpl
放在同一文件中,并将AssetFundCalculatorImpl
标记为private
。在这种情况下,只能访问同一文件中的代码,包括AssertFundValidator
,而不能访问程序其他部分的任何代码。