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