学习effective java-21类和接口之使用功能对象表示策略
2012-01-11 15:37
417 查看
该知识点是自己从书籍中学习的笔记。
函数指针是其他一些语言的专利,如c。c语言通过函数指针,可以对数组中的数据进行排序。函数指针就代表了排序规则。这就相当于就是策略设计模式。
在java是没有函数指针的,但是可以通过对象引用方式来实现。这种设计模式叫做策略模式。为了实现策略模式,需要首先定义一个接口(该接口是策略接口),然后一个类实现了该接口(作为具体策略)。
如果具体策略类仅仅是使用一次的话,那么就可以将该具体策略类作为匿名类来实现。如:Arrays.sort(strList, new Comparator<String>(){…..}).
如果具体策略类会使用多次的话,那么就将该具体策略作为一个静态变量导出。如下:
public interface Strategy {
public int comparator(String str1, String str2);
}
class Host {
private static class ConcreteStrategy
implements Strategy {
@Override
public int comparator(String str1, String str2) {
return 0;
}
}
public static final Strategy STRATEGY =
new ConcreteStrategy();
}
函数指针是其他一些语言的专利,如c。c语言通过函数指针,可以对数组中的数据进行排序。函数指针就代表了排序规则。这就相当于就是策略设计模式。
在java是没有函数指针的,但是可以通过对象引用方式来实现。这种设计模式叫做策略模式。为了实现策略模式,需要首先定义一个接口(该接口是策略接口),然后一个类实现了该接口(作为具体策略)。
如果具体策略类仅仅是使用一次的话,那么就可以将该具体策略类作为匿名类来实现。如:Arrays.sort(strList, new Comparator<String>(){…..}).
如果具体策略类会使用多次的话,那么就将该具体策略作为一个静态变量导出。如下:
public interface Strategy {
public int comparator(String str1, String str2);
}
class Host {
private static class ConcreteStrategy
implements Strategy {
@Override
public int comparator(String str1, String str2) {
return 0;
}
}
public static final Strategy STRATEGY =
new ConcreteStrategy();
}
相关文章推荐
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java - 类和接口 - 用函数对象表示策略
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java学习--第21条:用函数对象表示策略
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)