理解设计模式之观察者模式

概述

观察者模式定义了对象之间一对多依赖,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。

设计原则

为交互对象之间的松耦合设计而努力。尽力做到交互对象之间不直接产生联系和作用。

简要说明

观察者模式中主题(subject)与观察者(observer)之间的关系是当主题中观察者关心的部分发生变化时,要及时通知观察者,以便观察者能够及时作出反应。观察者会是不同的对象,因此我们在开发时不能因为观察者不同造成我们代码的修改。同时设计时要充分考虑到设计原则。

关系图

使用场景

多个不同的类都关心某一个类的相关属性,当这一个类的属性发生变化的时候,需要主动的告知这些关注它的属性的多个不同类。

举例说明

现在页面上具有多个不同类型的统计图,关于网站注册用户男女比例的显示。

public interface IWebSite{
    void addGraph(IGraph g);
    void remove Graph(IGraph g);
    void informAll();
}

public class WebSite implements IWebSite{
    private static int men = 0;
    private static int women = 0;
    private List<IGraph> list;

    @Override
    public void informAll(){
        for(IGraph g : list){
            g.update();
        }
    }
}

public interface IGraph{
    void update();
}

public class Graph_01 implements IGraph{
    @Override
    public void update(){
        .......
    }
}
......

代码说明:主题监管多个实现了同一个接口的不同类,从而实现了主题与观察者没有直接的关联,实现了松耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值