Я относительно новичок в "шаблонах проектирования", поскольку они упоминаются в формальном смысле. Я не был профессионалом очень долго, поэтому я довольно новичок в этом.
У нас есть чистый базовый класс виртуального интерфейса. Этот класс интерфейса, очевидно, должен дать определение того, какую функциональность должны выполнять его дочерние дочерние элементы. Текущее использование и ситуация в программном обеспечении диктует, какой тип производного ребенка мы хотим использовать, поэтому я рекомендовал создать оболочку, которая будет связывать тот тип полученного дочернего ребенка, который мы хотим, и вернуть указатель Base, указывающий на новый производный объект. Насколько мне известно, эта оболочка - это factory.
Хорошо, мой коллега создал статическую функцию в классе Base, чтобы действовать как factory. Это вызывает у меня проблемы по двум причинам. Во-первых, это, по-видимому, нарушает характер интерфейса базового класса. Мне кажется неправильным, что интерфейс сам должен будет знать о детях, полученных из него.
Во-вторых, это вызывает больше проблем, когда я пытаюсь повторно использовать класс Base в двух разных проектах Qt. Один проект - это то, где я реализую первую (и, вероятно, только реальную реализацию для этого одного класса... хотя я хочу использовать тот же метод для двух других функций, которые будут иметь несколько разных производных классов), а второй - фактический где мой код в конечном итоге будет использоваться. Мой коллега создал производный класс, чтобы действовать как тестер для реального приложения, в то время как я кодирую свою роль. Это означает, что я должен добавить свои заголовки и файлы cpp в свой проект, и это кажется неправильным, поскольку я даже не использую его код для проекта, пока я реализую свою часть (но он будет использовать мой, когда он будет закончен).
Правильно ли я полагаю, что factory действительно должен быть оберткой вокруг базового класса, а не базой, действующей как factory?