观察者模式

本文介绍了一种常用的设计模式——观察者模式的实现。通过具体的Java代码示例,展示了如何创建观察者接口,被观察对象如何持有多个观察者并遍历通知它们。同时,文章还演示了如何使用Lambda表达式简化观察者的创建。
观察者s、被观察对象持有许多观察者,遍历通知。
复制代码
   //观察者要实现的接口
public interface Observer {
   public void observe(String name);
}

复制代码
    //被观察的对象,
//该对象持有所有Observer,有变化时,可以通知每个observer
public class SubjectObj {
    private final List<Observer> observers=new ArrayList<>();

    public void noticeAll(String s){
        for (Observer ob:observers){
            ob.observe(s);
        }
    }

    public void addObserver(Observer o){
        observers.add(o);
    }
}

复制代码
//可以在lambda中去掉的类 具体观察者对象
    public class Ob1 implements Observer {

    @Override
    public void observe(String name) {
        System.out.println("ob1"+" "+name);
    }
}

复制代码
    public class Ob2 implements Observer {

    @Override
    public void observe(String name) {
        System.out.println("ob2"+" "+name);
    }
}

复制代码
public class Demo {
    public static void main(String[] args) {
        SubjectObj subjectObj=new SubjectObj();
        subjectObj.addObserver(new Ob1());
        subjectObj.addObserver(new Ob2());

        subjectObj.noticeAll("alarm");


        //lambda way,不需要新建ob1 ob2 两个类

        subjectObj.addObserver(name -> System.out.println("ob3"));
        subjectObj.addObserver(name -> System.out.println("ob4"));
        subjectObj.noticeAll("al");
    }
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值