про патnерны проектирования. Есть утверждение про factory method, которое я не понимаю:
"Система должна оставаться расширяемой путем добавления объектов новых типов. Непосредственное использование выражения new является нежелательным, так как в этом случае код создания объектов с указанием конкретных типов может получиться разбросанным по всему приложению. Тогда такие операции как добавление в систему объектов новых типов или замена объектов одного типа на другой будут затруднительными"
вот реально не понимаю, было так:
int main() {
Animal* animal = new Dog(); // Создание объекта Dog
animal->makeSound(); // Woof!
delete animal; // Освобождение памяти
Animal* bird = new Bird(); // Создание объекта Bird
bird->makeSound(); // Chirp!
delete bird; // Освобождение памяти
return 0;
}
А станет так:
int main() {
AnimalFactory* factory = new DogFactory(); // Создание фабрики для Dog
Animal* animal = factory->createAnimal(); // Создание объекта Dog
animal->makeSound(); // Woof!
delete animal; // Освобождение памяти
delete factory; // Освобождение памяти
factory = new BirdFactory(); // Создание фабрики для Bird
animal = factory->createAnimal(); // Создание объекта Bird
animal->makeSound(); // Chirp!
delete animal; // Освобождение памяти
delete factory; // Освобождение памяти
return 0;
}
Так в чём профит????
вы ошиблись чатом, попробуйте спросить в https://t.me/ProCxx
откуда эти шляпные примеры? типичное применение фабричного типа это реализация метода а-ля clone(), когда через базовый интерсфейс создаётся инстанс наследника
Обсуждают сегодня