java8 Lambda表达式+策略设计模式

 

 

/**
 * 策略模式代表了一类算法的通用解决方案,可以在运行时选择那种方案
 */
public interface Strategy {
    boolean execute(String s);
}
class IsAllLowerCase implements Strategy{
    @Override
    public boolean execute(String s) {
        return s.matches("[a-z]+");
    }
}
class IsNumric implements Strategy{
    @Override
    public boolean execute(String s) {
        return s.matches("\\d+");
    }
}
public class Validator {
    private final Strategy strategy;

    public Validator(Strategy strategy) {
        this.strategy = strategy;
    }
    public boolean validate(String s){
        return strategy.execute(s);
    }
}
import org.junit.Test;

import static org.junit.Assert.*;

public class ValidatorTest {

    @Test
    public void validate() {
        ///java8以前的策略模式实现
        Validator validator = new Validator(new IsNumric());
        System.out.println(validator.validate("aaaa"));
        ///使用Lambda表达式
        Validator numericValidate = new Validator((s)->s.matches("\\d+"));
        System.out.println(numericValidate.validate("89"));
        Validator lowerValidate = new Validator((s)->s.matches("[a-z]+"));
        System.out.println(lowerValidate.validate("addd"));
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值