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

相關文章
相關標籤/搜索