Time to go through some design patterns used wide in creating the applications.
Why do they exists, anyway?
Let's go to Observer pattern.See the example below,
<?php
// Observer interface
interface Observer {
public function update($message);
}
// Concrete Observers
class EmailSubscriber implements Observer {
private $email;
public function __construct($email) {
$this->email = $email;
}
public function update($message) {
echo "Email sent to {$this->email}: $message\n";
}
}
class SMSSubscriber implements Observer {
private $phone;
public function __construct($phone) {
$this->phone = $phone;
}
public function update($message) {
echo "SMS sent to {$this->phone}: $message\n";
}
}
// Subject
class NewsPublisher {
private $subscribers = [];
public function attach(Observer $observer) {
$this->subscribers[] = $observer;
}
public function detach(Observer $observer) {
$this->subscribers = array_filter(
$this->subscribers,
function($sub) use ($observer) {
return $sub !== $observer;
}
);
}
public function notify($message) {
foreach ($this->subscribers as $subscriber) {
$subscriber->update($message);
}
}
}
// Usage
$publisher = new NewsPublisher();
$email1 = new EmailSubscriber("alice@example.com");
$email2 = new EmailSubscriber("bob@example.com");
$sms1 = new SMSSubscriber("+919999999999");
$publisher->attach($email1);
$publisher->attach($email2);
$publisher->attach($sms1);
// Send notification
$publisher->notify("🚨 Breaking News: Observer Pattern Enhanced!");
?>
Comments
Post a Comment