,同時通過我的項目的第三方庫的一些消息來源瀏覽我注意到下面的代碼模式:有一個接口/類的公共靜態內部類的優點是什麼?
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
(Source) - 物質:
org.pushingpixels.substance.api.renderers.SubstanceDefaultTableCellRenderer
(Source)
有這樣的代碼結構的優點是什麼?
我的第一個想法是「聚合」,但同樣的事情可以使用普通的舊包來實現。那麼何時/爲什麼使用公共內部類而不是包是更好?
我沒看你已經張貼了現實生活中的例子,但一個區別是內部類可能使用外部類的私有成員,如果他們是「兄弟姐妹」(單獨的頂級類) – 2011-03-22 12:05:37
好問題,則不是這種情況。就我個人而言,我建議避免這種模式,因爲它將公共課程隱藏在人們通常不期望找到它們的位置,而沒有爲折衷提供任何明顯的益處。但也許有人知道這種模式的好處應該是什麼。 – aroth 2011-03-22 12:06:29
@Grzegorz,接口不能有私人成員。 – 2011-03-22 12:09:51