尝试分析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; |