Интерфейс базового класса фабрики должен позволять клиентам создавать любые экземпляры-потомки, основываясь только на параметрах, предоставленных его методу create
.Все дело в том, чтобы отделить создание объекта от знаний о конкретных конкретных типах, например, для обеспечения возможности внедрения зависимости.
Если вы хотите предоставить различные данные инициализации различным фабрикам-потомкам, эти данные должны содержаться или предоставляться самому классу фабрики (поскольку любой код, создающий и настраивающий фабрики, является единственной частью, о которой следует знатьконкретный тип).Итак, инициализируйте B
значением bool для Ultima
и C
значением Maxima
.
Честно говоря, вы, возможно, слишком сильно отредактировали свой пример: я не совсем уверен в том, что вы пытаетесь сделать.Если код WinForms не знает о конкретных типах, вам потребуется ввести какой-то разделительный интерфейс между ним и кодом создания фабрики, чтобы передать данные инициализации.