1 Java反应式编程( 二 )


1、出现了Lambda表达式(System.out::println);
2、出现了流(.just().subscribe());
3、出现了一个叫做Observable的类,而熟悉设计模式的都知道,它是观察者模式中特有的一个类 。
下面是观察者模式的一个示意图:

1 Java反应式编程

文章插图
观察者模式也是回调实现的一种方式 。观察者模式在开发里面还有另外一个「外号」:发布-订阅模式 。经典的观察者模式是像下面这样的:
1 Java反应式编程

文章插图
可以用代码来演示这种剧院和观众的观察者模式:
// 观众的行为(观察者-订阅者接口)@FunctionalInterfaceinterface Viewer {public void watch();}// 具体订阅者class ConcreteViewer implements Viewer {@Overridepublic void watch() {System.out.println("正在看表演");}}// 演员(发布者)class Actor {// 观众(订阅者)列表private List<Viewer> viewers = new ArrayList<Viewer>();// 买票(订阅)public void buyticket(Viewer viewer) {viewers.add(viewer);}// 退票(取消订阅)public void refund(Viewer viewer) {viewers.remove(viewer);}// 开始表演public void play() {for (Viewer viewer : viewers) {viewer.watch();}}}/** * 剧院 * * @author 湘王 */public class Theater {public static void main(String[] args) {ConcreteViewer viewer1 = new ConcreteViewer();ConcreteViewer viewer2 = new ConcreteViewer();Actor actor = new Actor();actor.buyticket(viewer1);actor.buyticket(viewer2);actor.buyticket(() -> System.out.println("正在VIP包厢看表演"));actor.play();}}这也是反应式编程的门槛比较高的原因,对于一些没有学过设计模式的同学来说,反应式编程确实很不好理解 。这也没办法,因为整个反应式编程的根基就是建立在观察者模式之上的,而且还结合Java9里面的Flow API做了一些改变,有兴趣的同学可以自己去了解一下,所以总结来说的话,反应式编程的特点就是这样的:
1 Java反应式编程

文章插图
用一句简单的话来概括反应式编程 = 函数式编程 + 流式计算 + 观察者模式 。
感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言 。欢迎骚扰,不胜荣幸~
【1 Java反应式编程】

经验总结扩展阅读