我应该在 Kotlin 库中使用 Object 还是 Class
Should i use Object or Class in a Kotlin library
我正在为应用程序编写 Kotlin 库。此库收集事件、错误、设备信息等信息以供稍后分析。
为了便于使用,我使用了对象而不是 类。库中的示例对象:
internal object LoggingModule { ...lots of methods to use internally... }
但我想知道使用 类 代替库中的对象是否更好?因为有一个 public 方法可以停止在库初始化时收集信息,并且由于有这个功能,所以如果选择了这个功能,也不需要在应用程序初始化(意思是对象)时创建 类。但我也不认为对app会有很大的影响。
初始化示例:
class App: Application() {
override fun onCreate() {
super.onCreate()
MyLibrary.setThings(myParameters).setEnabled(true).init()
}
}
我该怎么办?在这种情况下对象不是一个好主意吗?
Kotlin 中的对象是单例和静态的。
问题的答案与共享状态有关。单例应该是无状态的,没有任何共享。
我对诸如“我只使用 X;我从不使用 Y”这样的教条式想法表示怀疑。
更好地理解差异并根据具体情况适当应用它们。
我正在为应用程序编写 Kotlin 库。此库收集事件、错误、设备信息等信息以供稍后分析。
为了便于使用,我使用了对象而不是 类。库中的示例对象:
internal object LoggingModule { ...lots of methods to use internally... }
但我想知道使用 类 代替库中的对象是否更好?因为有一个 public 方法可以停止在库初始化时收集信息,并且由于有这个功能,所以如果选择了这个功能,也不需要在应用程序初始化(意思是对象)时创建 类。但我也不认为对app会有很大的影响。
初始化示例:
class App: Application() {
override fun onCreate() {
super.onCreate()
MyLibrary.setThings(myParameters).setEnabled(true).init()
}
}
我该怎么办?在这种情况下对象不是一个好主意吗?
Kotlin 中的对象是单例和静态的。
问题的答案与共享状态有关。单例应该是无状态的,没有任何共享。
我对诸如“我只使用 X;我从不使用 Y”这样的教条式想法表示怀疑。
更好地理解差异并根据具体情况适当应用它们。