观察者模式demo

<?php
/** * 观察者模式 *
*  @author: Mac * @date: 2012/02/22

*/
class Paper{
/* 主题    */   
private $_observers = array();   
public function register($obs){ /*  注册观察者 */
  $this->_observers[] = $obs;   
}     
  public function trigger(){  /*  外部统一访问    */   
    //print_r($this->_observers);
       if(!empty($this->_observers)){
                   foreach($this->_observers as $observer){
                                    $observer->update();         
                     }     
         }  
   }
}
/** * 观察者要实现的接口 */
/*
* 有其他的观察者只要实现obs接口 就不需要更改被观察者里$obs->update();
* 具体实现看观察者的反应
*/
interface Observerable{
     public function update();
}
class Subscriber implements Observerable{
     public function update(){     
        echo "Callback\n";  
      }
}


/*  测试 */
$paper = new Paper();
$paper->register(new Subscriber());
//$paper->register(new Subscriber1());
//$paper->register(new Subscriber2());
$paper->trigger();
好的!下面是一个简单的 Spring Boot 观察者模式的示例代码: 首先,我们需要定义一个被观察的主题类(Subject),可以是一个普通的 Java 类: ```java import java.util.ArrayList; import java.util.List; public class Subject { private List<Observer> observers = new ArrayList<>(); public void attach(Observer observer) { observers.add(observer); } public void detach(Observer observer) { observers.remove(observer); } public void notifyObservers(String message) { for (Observer observer : observers) { observer.update(message); } } } ``` 然后,定义观察者接口(Observer): ```java public interface Observer { void update(String message); } ``` 接下来,我们可以创建一些具体的观察者类来实现 Observer 接口: ```java public class ConcreteObserver implements Observer { @Override public void update(String message) { System.out.println("Received message: " + message); // 实现具体的观察者逻辑 } } ``` 最后,在 Spring Boot 应用中使用观察者模式: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ObserverPatternDemoApplication { public static void main(String[] args) { SpringApplication.run(ObserverPatternDemoApplication.class, args); // 创建被观察的主题对象 Subject subject = new Subject(); // 创建观察者对象 Observer observer1 = new ConcreteObserver(); Observer observer2 = new ConcreteObserver(); // 注册观察者 subject.attach(observer1); subject.attach(observer2); // 发送通知 subject.notifyObservers("Hello, observers!"); } } ``` 这个示例中,我们创建了一个被观察的主题对象(Subject),并注册了两个观察者对象(ConcreteObserver)。当主题对象调用 `notifyObservers` 方法时,观察者对象会接收到通知,并执行相应的逻辑。 希望这个示例能帮助到你!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值