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也支持多行文本时,我们之前需要通过继承实现,如今我们可以通过组合的方式将代码进行封装。

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

组合的更多好处,大家可以在以后开发中慢慢体会。也可以通过留言和我交流。

参考文件

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

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

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

你可能感兴趣的:(ios,swift)