【发布时间】:2021-02-18 07:27:56
【问题描述】:
我有这两个包含相同功能的类。
class UpInfoDayFragment : UpDayFragment<FragmentNavSituationDayBinding>() {
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupViews()
setupWhenItemDeletedFunctionality()
}
private fun setupWhenItemDeletedFunctionality() {
viewModel.itemDeleted.observe(viewLifecycleOwner) { dayDeleted ->
if (dayDeleted) {
navigateToPreviousFragment()
showMessage(binding.root, R.string.day_deleted)
}
}
}
}
class UpInfoTopicFragment : UpTopicFragment<FragmentNavIdeasTopicBinding>() {
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupViews()
setupWhenItemDeletedFunctionality()
}
private fun setupWhenItemDeletedFunctionality() {
viewModel.itemDeleted.observe(viewLifecycleOwner) { topicDeleted ->
if (topicDeleted){
navigateToPreviousFragment()
showMessage(binding.root, R.string.notebook_deleted)
}
}
}
}
我不能通过继承重用这个函数,因为这些类已经有超类。我不能使用接口,因为这些功能需要公开。我怎样才能重用这段代码?
【问题讨论】:
-
功能不一样,一个是删除
day,另一个是topic。你可能会争辩说这可以归结为sameFunction(observable: LiveData, message: Int),但你为什么要抽象出两个不同的东西来使函数相同呢? -
它们并不完全相同,但有些代码可以重复使用
标签: android kotlin inheritance interface reusability