拥有公共静态内部类的接口/类有什么优势?
拥有公共静态内部类的接口/类有什么优势?
在浏览项目第三方库的源代码时,我注意到了以下的代码模式:
public interface MyInterface { public static class MyClass1 implements MyInterface { ... } public static class MyClass2 implements MyInterface { ... } public static class MyClass3 implements MyInterface { ... } }
或者这样的:
public class MyBaseClass { public static class MyClass1 extends MyBaseClass { ... } public static class MyClass2 extends MyBaseClass { ... } public static class MyClass3 extends MyBaseClass { ... } }
现实生活中的例子有:
- SwingX: `org.jdesktop.swingx.decorator.HighlightPredicate` ([源码链接](http://www.koders.com/java/fidEB3B3E97DBA1FAF92BB26EA66E04D92173575899.aspx?s=idef:sort))
- Substance: `org.pushingpixels.substance.api.renderers.SubstanceDefaultTableCellRenderer` ([源码链接](http://www.koders.com/java/fid8C646B2858A9AD08F3718E0CC08B62386C23CC24.aspx))
为什么采用这样的代码结构有什么优势呢?我的第一个想法是“聚合”,但是使用普通的包也可以实现相同的效果。那么何时何地更好地使用公共内部类而不是包呢?