观察者模式
https://medium.com/design-patterns-in-swift/design-patterns-in-swift-chain-of-responsibility-pattern-f575c85a43c
https://medium.com/design-patterns-in-swift/design-patterns-in-swift-strategy-pattern-1d11945b4adc
https://medium.com/design-patterns-in-swift/design-patterns-in-swift-factory-pattern-b3cee09d54f8
https://medium.com/design-patterns-in-swift/design-patterns-in-swift-command-pattern-b95a1f4bbc45
https://www.raywenderlich.com/2102-intermediate-design-patterns-in-swift
https://stablekernel.com/three-features-thatd-be-real-swifty/
https://stablekernel.com/use-blocks-closures-delegates-callbacks/
https://blog.bobthedeveloper.io/swift-retention-cycle-in-closures-and-delegate-836c469ef128
Done: