当前位置:  开发笔记 > 编程语言 > 正文

Java:使用Singletons和泛型设计

如何解决《Java:使用Singletons和泛型设计》经验,为你挑选了1个好方法。

我正在使用一个名为Predicate的接口,用于筛选集合.例如,我可以定义

public class BlackCatPredicate implements Predicate {
  public boolean evaluate( Cat c ) {
       return c.isBlack();
  }
}

然后使用一些实用工具findAll( Collection coll, Predicate pred)方法将谓词应用于Cats的集合,并获得黑色的等等.

我的问题是:我在我的代码中找到黑猫,所以没有必要一遍又一遍地实例化BlackCatPredicate.它应该只有一个实例.(单身?)但是,在编写许多谓词的过程中,我不想将每个谓词都作为单例来实现.那么 - 这里的设计是什么?



1> Michael Borg..:

我将使用匿名类常量并将其与其操作的类放在一起:

public class Cat{
    public static final Predicate BLACK_PREDICATE = new Predicate(){
            public boolean evaluate( Cat c ) {
                return c.isBlack();
            }
        };

    // Rest of the Cat class goes here
}

如果谓词具有参数,则可以使用静态工厂方法.

编辑: 正如评论中指出的那样,根据使用模式,它可能会产生更清晰的代码,以便在单独的类中收集谓词常量(和/或工厂方法),或者只为Cat或其他所有类收集谓词常量(和/或工厂方法).这主要取决于他们的数量,有多少额外的组织是有帮助的.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有