字段覆盖或构造函数参数哪个更好

时间:2018-09-25 10:50:31

标签: oop kotlin

哪个基本片段更喜欢使用,为什么? 在此实现中,layoutRes是抽象字段。

abstract class BaseFragment1 : Fragment() {

    abstract val layoutRes: Int

    override fun onCreateView(inflater: LayoutInflater, 
                              container: ViewGroup?, 
                              savedInstanceState: Bundle?
            ): View {
        return inflater.inflate(layoutRes, container, false)
    }
}

在此实现中,layoutRes通过构造函数传递

abstract class BaseFragment2(@LayoutRes private val layoutRes: Int) : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, 
                              container: ViewGroup?, 
                              savedInstanceState: Bundle?
        ): View {
            return inflater.inflate(layoutRes, container, false)
     }
}

我想知道哪种实现更适合使用?如果您有其他解决方案,则可以共享。 实现示例:

class FramgnetA : BaseFragment1() {
    override val layuotRes = R.layout.layout
}

class FragmentB : BaseFragment2(R.layout.layout)

2 个答案:

答案 0 :(得分:2)

类似于Best practice for instantiating a new Android Fragment-对于可以从外部提供的参数,可以使用1-(var(fit@fit$u) / var(log(mydataframe$realised_measure)))Bundle

例如

Fragment#setArguments(Bundle)

否则,您的解决方案就可以了,但是每个参数都需要一个新的类。用kotlin编写课程很便宜,所以我认为它是首选。

答案 1 :(得分:0)

enter image description here

最近谷歌添加了这个片段构造函数的重载。我想现在,一切都很明显。