尝试分析Stream流工作原理,并模仿其工作原理实现一些轮子。
使用AND,OR,NOT拆分复杂boolean操作
参照Stream的工作方式,我们将运算逻辑缓存,仅在终结节点end()才开始计算 要实现链式调用,那么方法and(),or(),not(),test()就需要返回类型相同的对象,我们定义PipeLine类来进行链式调用 对于我们需要实现的boolean工具,我们需要关心的问题
- 如何进行计算
- 何时结束
- 规则校验
- 运算结果如何保存
我们定义Sink类来保存运算逻辑:
accpet方法,进行逻辑运算以及流程走向cancel方法,决定是否需要终结流程valid方法,校验链式调用语法是否合法,因为连续调用两次and,是无法进行计算的- 通过外部传递的
Bool对象来保存运算结果
1 | package com.leaderli.demo.bool; |