SwiftUI最佳实践之告别继承拥抱组合

SwiftUI给咱们的编程带来巨大便利,用View取代了UIView,用好用的List取代了繁琐的UITablewView,用VStack、HStack、ZStack取代了复杂的autolayout。可是SwiftUI最大意义在于给咱们提供了一个新的开发App的解决方案。

在旧世界里,万物皆对象,继承是开发的法宝。在SwiftUI世界里万物皆View,继承成为了二等公民,组合坐上了头等舱。编程

举个小例子

struct FootnoteText : View {
    let text: String
    var body: some View {
        MultiLineText(text: text, alignment: .center)
            .font(.footnote)
    }
}
struct MultiLineText: View {
    var text: String = ""
    var alignment: HAlignment = .leading
    var body: some View {
        Text(text)
            .lineLimit(nil)
            .multilineTextAlignment(alignment)
    }
}

MultiLineText(多行文本)在app中咱们常常会用到,咱们经过struct封装了一个MultiLineText,能够方便咱们后期使用。当咱们想让footnote也支持多行文本时,咱们以前须要经过继承实现,现在咱们能够经过组合的方式将代码进行封装。swift

UIKit’s core design philosophy is inheritance.
SwiftUI’s is composition.

组合的更多好处,你们能够在之后开发中慢慢体会。也能够经过留言和我交流。app

参考文件

https://medium.com/better-programming/best-practices-in-swiftui-composition-282b02772a24ui

更多SwiftUI教程和代码关注专栏

https://www.jianshu.com/c/7b3...code

相关文章
相关标签/搜索