第21条:用函数对象表示策略
函数指针的主要用途就是实现策略模式。为了在Java中实现种子模式,要声明一个接口来表示该策略,并且为每个具体策略声明一个实现了该接口的类。当一个具体的策略只被使用一次时,通常使用匿名内部类来声明和实例化这个具体策略类。当一个具体策略是设计用来重复使用的时候,它的类通常要被实现为私有的静态成员,并通过共有的静态final域被导出,其类型为该策略接口。
例1:
1
2
3
4
5 |
Arrays.sort(StringArray, new
Comparator<String>(){ public
int compare(String s1, String s2) { return
s1.length() - s2.length(); } }); |
例2:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
public class Host { private
static class StrLenCmp implements
Comparator<String>,Serializable{ @Override public
int compare(String s1, String s2) { return
s1.length() - s2.length(); } } public
static final Comparator<String> 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); } } |
《Effective Java 第二版》学习笔记,第21条:用函数对象表示策略
原文:http://www.cnblogs.com/harry881100/p/3544639.html