目录

裴先生
裴先生
发布于 2021-03-14 / 1 阅读
0
0

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

原创
定义一个方法,且该方法能够根据所传递参数对象的不同而具有不同行为
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对象; 本例针对字符串操作,提供三种不同的策略;

原创

版权声明:本博客原创文章,由 裴先生 2021年03月14日 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-SA 4.0 协议发布,转载须注明出处。


评论