设计模式之策略模式

本文介绍了Java8书籍中关于策略模式的应用,通过`ValidationStrategy`接口实现不同验证策略,如`IsAllLowerCase`和`IsNumeric`。`Validator`类使用策略模式进行字符串验证,`StrategyClient`展示了如何在客户端使用这些策略,包括使用Lambda表达式的简洁实现。文章旨在阐述策略模式的概念及其在实际代码中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Java8书籍策略模式

在这里插入图片描述

1.1、ValidationStrategy

package com.chenheng.strategy;

/**
 * @author: chenheng@ovopark.com
 * @create: 2021-12-01 16:55
 * @description: Java8书籍策略模式
 **/
public interface ValidationStrategy {
  boolean execute(String s);

}

1.2、IsAllLowerCase

package com.chenheng.strategy;

/**
 * @author: chenheng@ovopark.com
 * @create: 2021-12-01 16:56
 * @description:
 **/
public class IsAllLowerCase implements ValidationStrategy{

  @Override
  public boolean execute(String s) {
    return s.matches("[a-z]+");
  }
}

1.3、IsNumeric

package com.chenheng.strategy;

/**
 * @author: chenheng@ovopark.com
 * @create: 2021-12-01 16:56
 * @description:
 **/
public class IsNumeric implements ValidationStrategy{

  @Override
  public boolean execute(String s) {
    return s.matches("\\d+");
  }
}

1.4、Validator

package com.chenheng.strategy;

/**
 * @author: chenheng@ovopark.com
 * @create: 2021-12-01 17:23
 * @description: 策略模式
 **/
public class Validator {
  private final ValidationStrategy strategy;

  public Validator(ValidationStrategy strategy) {
    this.strategy = strategy;
  }

  public boolean validate(String s){
    return strategy.execute(s);
  }
}

1.5、StrategyClient

package com.chenheng.strategy;

/**
 * @author: chenheng@ovopark.com
 * @create: 2021-12-03 09:21
 * @description:
 **/
public class StrategyClient {
  public static void main(String[] args) {
    Validator numberValidator = new Validator(new IsNumeric());
    boolean numberValidate = numberValidator.validate("aaa");
    System.out.println("numberValidate->"+numberValidate);
    Validator allLowerCaseValidator = new Validator(new IsAllLowerCase());
    boolean lowerCaseValidate = allLowerCaseValidator.validate("aaa");
    System.out.println("lowerCaseValidate->"+lowerCaseValidate);
    System.out.println("Java8 lambda");
    Validator numberV = new Validator(s -> s.matches("\\d+"));
    boolean flag = numberV.validate("aaa");
    System.out.println("flag->"+flag);
    Validator lowerCaseV = new Validator(s -> s.matches("[a-z]+"));
    boolean flag1 = lowerCaseV.validate("123");
    System.out.println("flag1->"+flag1);
  }
}

2、菜鸟教程-策略模式

1、策略模式

3、简说设计模式——策略模式

1、简说设计模式——策略模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值