У меня есть следующие типы данных, и я изо всех сил пытаюсь реализовать хороший дизайн для создания экземпляров для разных типов.
События: у меня есть другой тип событий (EventA
, EventB
и т. Д.)
- У каждого события могут быть подтипы. Например,
EventAA
и EventAB
являются подтипами EventA
, аналогично EventBA
и EventBB
являются подтипами EventB
.
- Каждое событие имеет
source
и output
, но типы различаются. Например, EventAA
имеет List<String>
в качестве источника, EventBB
имеет int
в качестве источника. То же самое и с выводом.
В конце мне нужно создать EventAA
, EventBA
с их источником и выходами. Я попытался применить шаблон проектирования Abstract Factory для создания событий, определенных как Event
, EventSource
, EventOutput
как абстрактный класс. Также созданы EventAFactory
и EventBFactory
классы. Хотя мои под события EventAA и EventAB имеют источник и выход, типы могут отличаться Поэтому я не смог обобщить метод createEvent()
. Для каждого типа входных данных я определил метод createEvent(type, source, output)
, но это не так. Варианты использования для шаблона проектирования AbstractFactory онлайн не имеют таких подтипов, как я (EventAA
и т. Д.), И я запутался.