Делегат - состоит из:

Делегатор - тот кто ставит задачу. Тип делегата - протокол. какими свойствами и методами должен обладать делегат.

Делегат - тот кто исполняет задачу.

protocol CoffeMakerDelegate {
func makeCoffe(amount: Int) -> Int
}

class Client {
var name = "name"
var cofeMaker: CoffeMakerDelegate
}

struct Officiant: CoffeMakerDelegate {
funk makeCoffe(amount: Int) -> Int {
let price = 350
let count = amount / price
return count
}

}