在Java中用规则引擎模式替代ifelse - Vitali

本文介绍了如何在Java中使用规则引擎模式替代复杂的if-else结构,通过定义规则类并实现统一接口,将业务逻辑分离,使得代码更清晰易懂。规则引擎类负责管理和执行规则,当有新的规则时只需添加新的规则类。使用规则引擎后,调用变得简洁,避免了if-else语句的蔓延,提高了代码可维护性。
摘要由CSDN通过智能技术生成

规则引擎模式:这种模式的本质是if - else ,拆分if - else每个分支到规则类中,然后,主规则引擎类将保存所有规则并找到与客户端请求匹配的规则。

定义规则类

为了确保所有规则类都实现相同的方法,让我们定义一个每个类都将实现的接口:

<b>public</b> <b>interface</b> AncestorRule {
  Optional<AncestorResult> evaluate(String selector);
}

接下来,让我们定义第一个规则类。该类将保存if - else分支中定义的逻辑:

<b>public</b> <b>class</b> AncestorWithClassRule implements AncestorRule {

  @Override
  <b>public</b> Optional<AncestorResult> evaluate(String selector) {
    <b>if</b> (isCssClass(selector)) {
      String xpath = format(
        <font>"ancestor::*[contains(concat(' ', normalize-space(@class), ' '), ' %s ')][%s]"</font><font>,
        selector.substring(1)
      );
      <b>return</b> Optional.of(<b>new</b> AncestorResult(xpath));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值