В коде A я определяю два стандартных значения данных, но я думаю, что этот код, как и aBluetoothDef?.let{BluetoothHelper(mContext).setBluetooth(it)}
, слишком сложен для расширения.
В коде B я добавляю функцию для класса данных, я не знаю, есть ли хороший способ добавить функцию в класс данных, но я могу использовать такой же способ, как aBluetoothDef?.set(mContext)
для расширения.
Не могли бы вы сказать, какой из них лучше между Кодом А и Кодом Б?
И еще, я думаю, что код B смешивает данные и бизнес-логику в большом классе, это не очень хороший способ, верно?
Код A
class BluetoothHelper(val mContext: Context) {
fun setBluetooth(aBluetoothDef: BluetoothDef): Unit{
}
}
class WiFiHelper(val mContext: Context) {
fun setWiFi(aWiFiDef: WiFiDef): Unit{
}
}
interface DeviceDef
data class BluetoothDef(
val isChecked: Boolean = true,
val status: Boolean = false
) : DeviceDef
data class WiFiDef(
val isChecked: Boolean = true,
val name: String,
val status: Boolean = false
) : DeviceDef
private fun restoreBackup(){
var aMDetail=DetailsHandler().getDetail(mListBackupItem[index]._id)
var aBluetoothDef= aMDetail?.getDevice<BluetoothDef>()
var aWiFiDef=aMDetail?.getDevice<WiFiDef>()
aBluetoothDef?.let{BluetoothHelper(mContext).setBluetooth(it)}
aWiFiDef?.let { WiFiHelper(mContext).setWiFi(it) }
}
Код B
class BluetoothHelper(val mContext: Context) {
fun setBluetooth(aBluetoothDef: BluetoothDef): Unit{
}
}
class WiFiHelper(val mContext: Context) {
fun setWiFi(aWiFiDef: WiFiDef): Unit{
}
}
interface DeviceDef
data class BluetoothDef(
val isChecked: Boolean = true,
val status: Boolean = false
) : DeviceDef{
fun set(mContext: Context){
BluetoothHelper(mContext).setBluetooth(this)
}
}
data class WiFiDef(
val isChecked: Boolean = true,
val name: String,
val status: Boolean = false
) : DeviceDef {
fun set(mContext: Context){
WiFiHelper(mContext).setWiFi(this)
}
}
private fun restoreBackup(){
var aMDetail=DetailsHandler().getDetail(mListBackupItem[index]._id)
var aBluetoothDef= aMDetail?.getDevice<BluetoothDef>()
var aWiFiDef=aMDetail?.getDevice<WiFiDef>()
aBluetoothDef?.set(mContext)
aBluetoothDef?.set(mContext)
}