Делегат - состоит из:
Делегатор - тот кто ставит задачу.
Тип делегата - протокол. какими свойствами и методами должен обладать делегат.
Делегат - тот кто исполняет задачу.
protocol CoffeMakerDelegate { func makeCoffe(amount: Int) -> Int }
class Client { var name = "name" var cofeMaker: CoffeMakerDelegate? /- НАШ ДЕЛЕГАТ func visitCoffeHouse(cofeMaker: CoffeMakerDelegate) { self.cofeMaker = cofeMaker } func goOutCoffeHouse () { self.cofeMaker = nil } func buyCoffe(amount: Int) { guard let delegate = cofeMaker else { print("Vi ne v cofeyne!") } delegate.makeCoffe(amount: amount) } }
struct Officiant: CoffeMakerDelegate { funk makeCoffe(amount: Int) -> Int { let price = 350 let count = amount / price return count } } let officiant = Officiant() let client = Client() client.visitCoffeHouse(cofeMaker : officiant) client.buyCoffe(amount: 2000)