我有一個「標準」JPanel
內有兩個面板。我試圖創建一種模板類,然後擴展它並實現內容。問題是關於實施它的方式。如何用靜態工廠方法創建抽象類?
下面的代碼是我試圖使它工作,但我剛開始閱讀有效的Java書,我不熟悉靜態工廠方法。特別試圖抽象它們。
,我試圖專門遵循一些從書上的提示是
- 考慮靜態工廠方法代替構造
- 青睞組成了繼承
- 不想接口抽象類
但我無法找到一個很好的解決方案尊重這些要點(沒有他們:P)。
public abstract class CentralPage {
static JPanel getInstance() {
JPanel container = new JPanel();
container.setBackground(Color.white);
container.setBorder(
BorderFactory.createCompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder(10, 10, 10, 10)));
container.setMinimumSize(new Dimension(960, 400));
container.setPreferredSize(new Dimension(960, 400));
container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));
JPanel up = getUp(container);
container.add(up);
JPanel down = getDown(container);
container.add(down);
return container;
}
abstract JPanel getDown(JPanel container);
abstract JPanel getUp(JPanel container);
}
隨意問您是否需要更多關於其他代碼部分的信息。
你想要解決什麼[*問題*](http://meta.stackoverflow.com/q/66377/163188) – trashgod
我想,我有一個抽象類與默認的靜態工廠方法,但它是不可能的在抽象類上添加靜態方法。所以我試圖找到標準的工作。更好? –
提供靜態工廠方法而不是構造函數的基本思想是隱藏實現。這些實現隱藏在私有或匿名類中。你的方法看起來更像抽象工廠方法。你應該提供一個通用的工廠界面,然後可以用來定製你的面板。儘管如此,如果需要,仍然可以將工廠方法的「默認」實現作爲靜態方法提供。 – kaetzacoatl