Это хороший дизайн: использование чистого абстрактного класса для облегчения использования фабричного метода - PullRequest
3 голосов
/ 15 мая 2011

У меня есть GUI, составленный из нескольких JPanels.Я хочу использовать фабричные методы для создания экземпляров JPanels.Вот диаграмма UML, показывающая, что я хочу сделать:

enter image description here

Проще говоря, фабричный метод должен использовать методы из JPanel и SimulatorSubscriber, но если createPanel() метод возвращает JPanel, SimulatorFactory не сможет вызвать метод setSimulator(Simulator).И наоборот, если он возвращает SimulatorSubscriber, он не сможет добавить панель к графическому интерфейсу, который он создает.

Моей первой идеей было использование приведений ........ Мне не нужно уточнять ..

Во-вторых, я думал сделать то, что нарисовал на диаграмме.

Это хорошая / распространенная практика, и есть ли альтернативы?Может быть, мое использование фабричного метода тоже отключено.

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Я бы четко разделил модель и вид.

Таким образом, фабрика не может одновременно создавать «элементы бизнес / модели», такие как симулятор, и элементы пользовательского интерфейса, такие как SimulatorDisplay. Поэтому я бы использовал две фабрики. Один для бизнес-элементов, один для элементов пользовательского интерфейса.

Я бы избегал использования наследования для решения всех возможных проблем. Так что больше не заставляйте SimulatorDisplay наследовать от JPanel. Я бы использовал поле JPanel в SimulatorDisplay и создал бы интерфейс 'HasPanel' с методом getPanel () внутри него.

Я бы не стал напрямую предоставлять полный симулятор подписчикам, а использовал бы реальный механизм слушателя, который обеспечивает только общедоступное состояние симулятора вместо самого симулятора.

В общем, не злоупотребляйте Abstracts классом и наследованием в Java (исключая, может быть, из интерфейсов). Вы действительно ограничены, если Java не поддерживает множественное наследование. Но даже если в большинстве случаев это не так полезно.

0 голосов
/ 15 мая 2011

Выглядит слишком сложно, чтобы быть обычным.Я думаю, что это довольно далеко, но это только мое мнение.

Я мог бы помочь нам обоим, если бы вы могли написать краткое изложение проблемы, которую вы пытаетесь решить здесь, что-то помимо общей «установки»JPanels используя фабрику ".Я знаю, что такое фабрика, и я знаю, что такое Swing UI, но с какой трудностью у вас возникли трудности, заставившие вас думать, что вам нужен шаблон проектирования?Или вы делали это самостоятельно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...