У меня есть «стандарт» 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