ООП и протоколы

swift
ios

#1

У нас есть два класса Class1 и Class2 поддерживающие протокол, который обязует иметь их функцию ну назовем ее takeInBag. У нас есть viewcontroller во методе viewdidload которого мы и вызываем эту функцию, takeInBag. Не могли бы вы подсказать, как вызвать эту функцию в не зависимости от экземпляров класса, то есть чтобы мы не знали точно, функцию какого из этих классов мы будем использовать. Возможно нужно использовать делегирование?


#2
protocol MyProtocol: class {
    func takeInBag()
}

class Class1: MyProtocol {
    func takeInBag() {
        print(self)
    }
}

class Class2: MyProtocol {
    func takeInBag() {
        print(self)
    }
}

class ViewController: UIViewController {

    var myProtocol: MyProtocol!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        myProtocol = Class1()
        myProtocol.takeInBag()
        
        myProtocol = Class2()
        myProtocol.takeInBag()
    }
}