用简单代码初识策略设计模式

  • A+
所属分类:JAVA


共计 1146 个字符,预计需要花费 3 分钟才能阅读完成。

定义一个方法,且该方法能够根据所传递参数对象的不同而具有不同行为

public abstract class Processor {
        public String name() {
            return getClass().getSimpleName();
        }
        // 抽象方法
        public abstract Object process(Object input);
}
/**
 * 大写策略实现类
 */
public class Upcase extends Processor {
    @Override
    public Object process(Object input) {
        return ((String) input).toUpperCase();
    }
}
/**
 * 小写策略实现类
 */
public class Downcase extends Processor {
    @Override
    public Object process(Object input) {
        return ((String) input).toLowerCase();
    }
}
/**
 * split策略实现类
 */
public class Splitcase extends Processor {
    @Override
    public Object process(Object input) {
        return Arrays.toString(((String) input).split(" "));
    }
}
import java.util.Arrays;

/**
 * @author plm
 * @create 2021/3/14 16:02
 */
public class Apply {
    // 策略设计模式方法入参对象Processor不同,处理String的实现逻辑不通
    public static void process(Processor processor, String input) {
        System.out.print(input + "-----");
        System.out.print(processor.name() + "-----");
        System.out.println(processor.process(input));
    }

    public static void main(String[] args) {
        process(new Upcase(), "WAsd"); // 大写策略
        process(new Downcase(), "waSD"); // 小写策略
        process(new Splitcase(), "w as d"); // 截断策略
    }
}
/* 输出
WAsd-----Upcase-----WASD
waSD-----Downcase-----wasd
w as d-----Splitcase-----[w, as, d]
*/

本例中策略即为 Processor对象;
本例针对字符串操作,提供三种不同的策略;

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: