观察者模式总结

1  一对多关系。一个被观察者,n个观察者。

解耦,此时被观察者不需要知道都有哪些观察者,观察者也不需知道被观察者究竟是谁。

(能够解耦的原因:程序依赖于抽象,而不是相互依赖)


2 一般实现:

Observer接口、Subject接口,ObserverImpl实现(多个实例,甚至可以多个子类)、SubjectImpl实现(单个)

其中:

Subject接口:regist(),unRegist(),notifyAllRegistor()

Observe接口:doSomething()

在notifyAllRegistor()中调用所有注册了的observer的doSomething方法jike


3 java实现:

java.util.Observer接口 和 java.util.Observable接口

其中

java.util.Observable:addObserver(),deleteObserver(),notificateObservers()

java.util.Observer:update(Observable ob,Object arg)

 

4 spring实现:

<bean id="observer1" class="MyObserver"/>  
<bean id="observer2" class="MyObserver"/>    
<bean id="subject1" class="MySubject"/>  
  
<bean id="subject"  
       class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">  
       <property name="targetObject"><ref local="subject1"/></property>  
       <property name="targetMethod"><value>addObserver</value></property>  
       <property name="arguments">  
         <list>  
            <ref bean="observer1"/>  
          <ref bean="observer2"/>  
         </list>  
      </property>  
</bean>
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值