Я часто создаю классы с суффиксом 'Factory'.Эти классы, как правило, отвечают исключительно за создание определенного класса или набора связанных классов.Однако я всегда чувствовал, что это, вероятно, не лучшая практика и что есть лучший способ приблизиться к этому.Одна из причин, по которой я считаю, что это не лучшая практика, заключается в том, что, хотя я использую суффикс «Фабрика», я на самом деле не использую шаблон фабричного проектирования.
Допустим, у меня есть класс Vehicle
, который содержит две переменные make
и model
.Я хочу, чтобы моя проблема была в состоянии создать ряд этих Vehicle
объектов, поэтому я хочу инкапсулировать код для создания этих объектов в одном классе.Я мог бы создать следующий класс.
public class VehicleFactory
{
public Vehicle CreateVehicle(string make, string model)
{
//create vehicle..
return vehicle;
}
}
Затем можно использовать VehicleFactory
в моей программе, где бы я ни хотел, без повторения кода и нарушения DRY.
Мне часто нужно создавать этивид фабричных классов при рефакторинге кода, более конкретно, когда я нахожу два или более классов, которые создают одни и те же объекты.Я хотел бы провести рефакторинг кода, вытаскивая повторяющийся код и затем помещая его в определенный фабричный класс.
Есть ли лучший способ решения этой проблемы?