The Observer pattern is a design pattern that allows objects (observers) to register to receive notifications from another object (the subject). In Swift, the Observer pattern can be implemented using the ‘NotificationCenter‘ class and the ‘addObserver‘ method, like this:
class SomeObserver {
func startObserving() {
NotificationCenter.default.addObserver(
self,
selector: #selector(handleNotification),
name: Notification.Name("silentMode"),
object: nil
)
}
@objc func handleNotification(_ notification: Notification) {
// Handle the notification here.
}
}
class SomeSubject {
func sendNotification() {
NotificationCenter.default.post(
name: Notification.Name("silentMode"),
object: self
)
}
}
The SomeObserver
class has a startObserving
method that registers the handleNotification
method as an observer of the silentMode
notification. The handleNotification
method will be called whenever the silentMode
notification is posted by the SomeSubject
class.
The SomeSubject
class has a sendNotification
method that posts the silentMode
notification using the NotificationCenter
class. This will trigger the handleNotification
method on any objects that have registered as observers of the silentMode
notification.
The Observer pattern is useful for allowing objects to communicate with each other without tightly coupling their behavior. It enables objects to react to changes in the state of the subject, and to receive notifications about important events without having to know the details of how the events are generated. By using the Observer pattern, developers can write more modular, flexible, and decoupled code.
Also read: The Singleton Pattern in Swift