简单理解设计模式——观察者模式


一、简单理解观察者模式

观察者模式,常用的监听器运用了这一设计模式,所以又叫监听者模式。顾名思义,就是创建一个被监听的对象或者容器对象,监听这些对象状态的变化。简单来说,就是对象状态(参数)修改后,调用其他业务方法。

二、DEMO

渣渣辉和唐正奎是两个宅男,喜欢一个女妆主播黄翔辉。只要黄翔辉开播,那么渣渣辉和唐正奎会立马刷礼物哄黄翔辉线下约见。在这个故事里,女妆主播黄翔辉是被监听者;渣渣辉和唐正奎是监听者;上线代表着黄翔辉状态的变化被两个宅男监听到了。上线后,渣渣辉和唐正奎刷礼物就是监听后业务实现

1.创建监听对象 – (宅男)

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ZhaiNan{

    String name;
    
    ZhaiNan(){}

    //观察者成员方法
    public  void  gift(String name,String state){
        System.out.println("我是"+this.name +",因为"+name+"直播"+state+",我刷礼物线下约见!");
    }

}

2.创建被监听对象 – (女主播)

@Data
@NoArgsConstructor
@AllArgsConstructor
public class NvZhuBo{
    String name;
    
    String state = "下线"; //默认为离线状态
    
    //关注的宅男
    List<ZhaiNan> zhanNanList ;
    
    @Override
    public void setState(String state) {
        this.state = state;
        //只要状态发生变化,通知观察者,数据改变了,刷礼物了
        this.tell();
    }
    
    //关注
    public void follow(ZhaiNan zhaiNan){
         this.zhanNanList .add(zhaiNan);
    }
    
    //通知方法
    public void tell() {
        for (ZhaiNan zhaiNan: zhanNanList ) {
            zhaiNan.gift(this.name,this.state);
        }
    }
}

3.测试类

public class test{

	public static void main(String[] args) {
		//创建两个宅男
		ZhaiNan zzh = new ZhaiNan("zzh");
		ZhaiNan tzk = new ZhaiNan("tzk");
		//创建女主播
		NvZhuBo hxh = new NvZhuBo("hxh");
		//两个宅男监听了女主播,进入备胎列表
		hxh.follow(zzh);
		hxh.follow(tzk);
		System.out.println(hxh.name+"之前"+s.getState());
		//当女主播上线的时候,会被监听到,并且后续做的业务是zzh和tzk刷礼物的操作
		hxh.setState("上线");
		System.out.println(hxh.name+"目前"+s.getState());
		//在setState后会执行gift方法,也可以换成线下约见或其他房法
	}
}


执行结果必然是:

hxh之前下线
我是zzh,因为hxh直播上线,我刷礼物线下约见
我是tzk,因为hxh直播上线,我刷礼物线下约见
hxh目前在线


总结

在观察者模式中,有一个有所有观察者的容器集合,在被观察者状态变化时,修改状态的方法后跟着 状态变化后需要执行的功能方法,所有观察者的集合需要执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值