观察者模式

        一、模式动机        

        建立一种对象与对象之间的依赖关系,一个对象发生变化时将自动通知其他对象,其他对象将相应做出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。

                 

        二、模式定义

        观察者模式(Observer Pattern):定义了对象间一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。

        三、模式结构

         

        四、模式分析

        1)观察者模式描述了如何建立对象与对象之间的依赖关系。

        2)这一模式中的关键对象是观察目标和观察者,一个目标可以有多个观察者,当观察目标的状态发生变化时,所有的观察者都将得到通知。

        3)观察者得到通知后,即时更新自己的状态,与观察目标同步。

        五、模式代码

1)抽象目标类

    public abstract class Subject {
        protected ArrayList observers =new ArrayList();//观察者数组
        public abstract void attach(Observer1 observer);//添加观察者
        public abstract void detach(Observer1 observer);//删除观察者
        public abstract void nontify();//通知观察者
    }
2)具体目标类

    public class ConcreteSubject extends Subject {
        //private Observer1 observer;
        public  void attach(Observer1 observer){
            observers.add(observer);
        }
        public  void detach(Observer1 observer){
            observers.remove(observer);
        }
        public  void nontify() {
            //使用for遍历循环通知所有观察者
            for(Object obs:observers){
                ((Observer1)obs).update();
            }
        }       
    }
3)抽线观察者

    public interface Observer1 {
        public void  update();
    }
4)具体观察者

    public  class ConcreteObserver implements Observer1 {
        public void update() {
            //更新相关方法
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 32
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值