Интерфейсы - это решение.
Это решение немного сложнее, чем другие, но может помочь вам для разных целей, например, для отсоединения модулей в вашем приложении.
Допустим, у вас есть класс Foo
, который имеет объект типа Bar
, и вам нужно вызвать doStuff()
.
Создать Протокол для Bar. Таким образом, Foo отделен от Bar и становится полностью тестируемым, не раскрывая его содержимое Foo. Примерно так:
protocol BarProtocol {
func doStuff()
}
class Bar:BarProtocol {
func doStuff() {
print("Hello world")
}
}
class Foo {
var bar:BarProtocol
init() {
self.bar = Bar()
self.bar.doStuff()
}
}