Evgenii Legotckoi
25 вересня 2018 р. 16:09

Приклад - Фабричний метод в Delphi

Зміст

Цей шаблон корисний, якщо ви хочете інкапсулювати створення класу та ізолювати інформацію про конкретний клас від клієнтської програми через абстрактний інтерфейс.

Один із прикладів цього може виникнути, якщо у вас є об'єктно-орієнтований бізнес-додаток, потенційно пов'язаний з декількома цільовими СУБД. Клієнтський додаток тільки хоче знати про бізнес-класи, а не про їхнє сховище та конкретну реалізацію для отримання даних.


Приклад

У прикладі Abstract Factory кожна з функцій створення віджету є віртуальним Factory Method. У своїй реалізації ми визначаємо конкретний клас віджетів як значення, що повертається.

  1. TRedSpeedButton = class(TSpeedButton)
  2. public
  3. constructor Create(AOwner: TComponent); override;
  4. end;
  5.  
  6. constructor TRedSpeedButton.Create(AOwner: TComponent);
  7. begin
  8. inherited Create(AOwner);
  9. Font.Color := clRed;
  10. end;
  11.  
  12. function TORedFactory.CreateSpeedButton(AOwner: TComponent): TSpeedButton;
  13. begin
  14. Result := TRedSpeedButton.Create(AOwner);
  15. end;

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
  • Останні коментарі
  • Evgenii Legotckoi
    16 квітня 2025 р. 17:08
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    12 квітня 2025 р. 17:12
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    01 квітня 2025 р. 11:41
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    09 березня 2025 р. 21:02
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    09 березня 2025 р. 16:14
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…