疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

用函数对象表示策略


 

  函数指针的主要用途就是实现策略模式。为了在Java中实现种子模式,要声明一个接口来表示该策略,并且为每个具体策略声明一个实现了该接口的类。当一个具体的策略只被使用一次时,通常使用匿名内部类来声明和实例化这个具体策略类。当一个具体策略是设计用来重复使用的时候,它的类通常要被实现为私有的静态成员,并通过共有的静态final域被导出,其类型为该策略接口。

  例1:

  Arrays.sort(StringArray,new Comparator(){

  public int compare(String s1, String s2) {

  return s1.length() - s2.length();

  }

  });

  例2:

  public class Host {

  private static class StrLenCmp implements Comparator,Serializable{

  @Override

  public int compare(String s1, String s2) {

  return s1.length() - s2.length();

  }

  }

  public static final Comparator STRING_LENGTH_COMPARATOR = new StrLenCmp();

  public static void main(String[] args) {

  String s1 = "";

  String s2 = "";

  int result = Host.STRING_LENGTH_COMPARATOR.compare(s1, s2);

  System.out.println(result);

  }

  }