- 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对象;
本例针对字符串操作,提供三种不同的策略;
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫