我在一些代码中找到了这个构造。
拥有私有静态类实现A有什么好处?这让我想起了C ++中的Pimpl习惯用法。在Java中使用Pimpl惯用法有什么好处?
public abstract class A {
public void doStuff();
public static A getNewInstance() {
return new AImpl();
}
private static class AImpl extends A {
public void doStuff() {
....
}
}
}
拥有私有静态类实现A有什么好处?
好吧,它完全隐藏了实现,因此从封装的角度来看,这是非常好的。自定义比较器是我几次见过的一种情况。例如:
public class Person
{
public static final Comparator<Person> NAME_COMPARATOR = new NameComparator();
public static final Comparator<Person> AGE_COMPARATOR = new AgeComparator();
// Name, age etc properties
private static class NameComparator implements Comparator<Person>
{
...
}
private static class AgeComparator implements Comparator<Person>
{
...
}
}
比较器实现类实际上不需要在外部可见Person
,并且很高兴能够通过公共静态字段轻松获得实例。
没有调用者需要知道实现-例如,只有一个比较器类接受参数-他们只需要通过常量表达他们想要哪个比较器。(当然,您也可以为此使用一个枚举。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句