- 1. Приклад
Цей шаблон корисний, якщо ви хочете інкапсулювати створення класу та ізолювати інформацію про конкретний клас від клієнтської програми через абстрактний інтерфейс.
Один із прикладів цього може виникнути, якщо у вас є об'єктно-орієнтований бізнес-додаток, потенційно пов'язаний з декількома цільовими СУБД. Клієнтський додаток тільки хоче знати про бізнес-класи, а не про їхнє сховище та конкретну реалізацію для отримання даних.
Приклад
У прикладі Abstract Factory кожна з функцій створення віджету є віртуальним Factory Method. У своїй реалізації ми визначаємо конкретний клас віджетів як значення, що повертається.
TRedSpeedButton = class(TSpeedButton) public constructor Create(AOwner: TComponent); override; end; constructor TRedSpeedButton.Create(AOwner: TComponent); begin inherited Create(AOwner); Font.Color := clRed; end; function TORedFactory.CreateSpeedButton(AOwner: TComponent): TSpeedButton; begin Result := TRedSpeedButton.Create(AOwner); end;