Git Hub
коротко

Swift: динамическое создание класса

26 марта 2017, 17:20
protocol Runable {
    init()
}

class AdvHandler: Runable{
    
    required init(){
        
    }
    
    func run(){
        print("run class is runnable()")
    }
}


func createInstance<T>(typeThing:T.Type) -> T where T:Runable {
    return typeThing.init()
}

Смысл этого подхода в том что метод createInstance понятия не имеет что за класс он создаёт для клиента.
это открывает большие возможности абстрагирования.
Повышая уровень абстракции.

Применение

let a = createInstance(typeThing: AdvHandler.self) as AdvHandler
        
        a.run()
Поделиться
Популярное