说明:Apply.process() 方法可以接受任何类型为 Process,并将其应用到一个 Object 对象上,然后打印结果。像本栗子中,创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为" 策略设计模式 "。这类方法包含所要执行的算法中固定不变的部分,而" 策略 " 包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码。这里,Process 对象就是一个策略,在 main()中可以看出有 3 种不同类型的策略应用到了 String 类型的 s 对象上。
说一下自己之前不会的 split()方法,它是 String 类的方法的一部分,它接受 String 类型的对象,并且以传递进来的参数作为边界,将该 String 对象分隔开,然后返回一个数组 String[]。
代码如下:
- package Interface;
- import java.util. * ;
- /** * Created by caoxiaohong on 16/12/4. */
- class Processor {
- public String name() {
- return getClass().getSimpleName();
- }
- Object process(Object input) {
- return input;
- }
- }
- class Upcase extends Processor {
- String process(Object input) {
- return ((String) input).toUpperCase();
- }
- }
- class Downcase extends Processor {
- String process(Object input) {
- return ((String) input).toUpperCase();
- }
- }
- class Splitter extends Processor {
- String process(Object input) {
- return Arrays.toString(((String) input).split(" "));
- }
- } //main processpublic class Apply { public static void process(Processor p,String s){ System.out.println("Using Processor "+ p.name()); System.out.println(p.process(s)); } public static String string="i believe i can do the best job!"; public static void main(String[] args){ process(new Upcase(),string); process(new Downcase(),string); process(new Splitter(),string); }}
idea 中的运行结果如下:
- Using Processor UpcaseI BELIEVE I CAN DO THE BEST JOB!Using Processor DowncaseI BELIEVE I CAN DO THE BEST JOB!Using Processor Splitter[i, believe, i, can, do, the, best, job!]Process finished with exit code 0
来源: http://www.92to.com/bangong/2016/12-12/14309721.html