在Swift 3.0中实现工厂设计模式

时间:2017-01-20 12:15:11

标签: ios swift3 protocols

我想在 Swift 3.0 中实施工厂设计模式

我想到的基本解决方案是:

这是一种合理的方法吗?

或者Swift中有其他设计模式吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试将此实现用作参考。 https://redflowerinc.com/implementing-factory-design-pattern-in-swift/

import UIKit
import PlaygroundSupport

enum Maps : Int {
    case google = 1
    case apple
}

protocol Display {
    func showMap()
}

class Map {
    let type : Int = 0
    func showMap(type : Maps) -> Display {
        switch type {
        case Maps.apple :
            return AppleMap()
        case Maps.google :
            fallthrough
        default:
            return GoogleMap()
        }
    }
}

class AppleMap : Display {
    func showMap() {
        print("showing apple map")
    }
}

class GoogleMap : Display {
    func showMap() {
        print("showing google map")
    }
}

class MyViewController : UIViewController {
    override func loadView() {
        let view = UIView()
        view.backgroundColor = .white

        let label = UILabel()
        label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
        label.text = "Hello World!"
        label.textColor = .black

        view.addSubview(label)
        self.view = view

        let map = Map()
        map.showMap(type: Maps.google)
        map.showMap(type: Maps.apple)
    }
}