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