effective java 第21条:用函数对象表示策略

本文介绍Java中如何使用策略模式及匿名类实现灵活的比较器。策略模式通过定义一个接口来封装算法家族,使算法独立于使用它的客户端。文中通过具体示例展示了如何创建可复用的具体策略。

public class Host {
    
    private static class StrLenCmp implements Comparator<String>,Serializable {
        private static final long serialVersionUID = -2947076330971319599L;

        @Override
        public int compare(String o1, String o2) {
            return o1.length() - o2.length();
        }
    }
    
    public static final Comparator<String> STRING_LENGTH_COMPARATOR = new StrLenCmp();
}
 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值