Java编程语言:私有实现类
发布时间:2020-12-14 05:11:52 所属栏目:Java 来源:网络整理
导读:我在一些代码中发现了这个结构. 私有静态类实现A有什么好处吗?这让我想起了C中的Pimpl成语.在Java中使用Pimpl成语有什么好处吗? public abstract class A { public void doStuff(); public static A getNewInstance() { return new AImpl(); } private sta
我在一些代码中发现了这个结构.
私有静态类实现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() { .... } } } 解决方法
那么它完全隐藏了实现,所以从封装的角度来看,这是相当不错的.我曾经看过这种情况的一种情况是自定义比较器.例如: 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外部可见,并且很容易通过公共静态字段轻松获取一个实例. 没有来电者需要知道实现 – 例如,可能只有一个比较器类可以使用参数,他们只是通过常量来表达他们想要的比较器. (当然可以同样使用这个枚举) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |