powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Шаблоны проектирования в Delphi
11 сообщений из 36, страница 2 из 2
Шаблоны проектирования в Delphi
    #39831563
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaВсе вышеуказанные "действия" тоже можно заменить шаблонными методами. Например посмотреть в сторону паттерна "стратегия".
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  TShipAction = class abstract
     procedure DoAction(AShip: TShip); abstract;
     property ActionType: TShipActionType;
  end;

  TShipState = class abstract
  public
    function GetActionByType(ActionType: TShipActionType): TShipAction;
    property ShipActions[Index: integer]: TShipAction;
    property ShipActionCount: integer;
  end;


Таким образом для каждого состояния можно компоновать различные уникальные и не уникальные наборы действий. Ну и соответственно иметь возможность расширять список возможных действий.
А сами процедуры для набора ShipActions ведь все равно где-то надо прописывать. По итогу количество кода будет таким же или еще больше.
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831569
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladkealon(Ruslan)пропущено...
когда вы присваиваете контролу другой Action у него меняется Caption, Enabled, Checked(если есть) и само собой метод OnClick или аналоги

т.е. всем отображением и действиями управляет уже новый присвоенный Action
Ну там 10-20 контролов (кнопок). И кроме кнопок (видимых элементов), есть еще поля и таблицы в базе данных, которым присваиваются значения и выполняются некие процедуры.
Вы предлагаете шаблон State сделать наизнанку. Там подменяется класс, внутри которого ряд процедур, на другой класс с таким же набором процедур. А вы предлагаете оставить класс, а менять имена процедур для каджой кнопки. Зачем, если есть уже отработанный шаблон?откуда ж я знаю зачем вам это надо, формально это тоже самое

я даже не знаю зачем вам на каждый учавствующий контрол что-то менять, если вы в итоге свели всё к 5-6 методам, то логично предположить, что для смены состояния достаточно указать эти 5-6 новых методов.
Как это сделать, я вариант предложил
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831577
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)я даже не знаю зачем вам на каждый учавствующий контрол что-то менять, если вы в итоге свели всё к 5-6 методам, то логично предположить, что для смены состояния достаточно указать эти 5-6 новых методов.
Как это сделать, я вариант предложил
Привел пример программы, чтобы увидеть пример реализации шаблона State на Delphi. Таков был вопрос. Везде в примерах пишут на C++ или на Java, что довольно затруднительно понять, т.к. там другие особенности программирования.
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831627
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://refactoring.guru/ru/design-patterns/state

естественно это все без VCL компонентов... чистый рантайм код на базовых классах...
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831644
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
28.06.2019 13:21, X-Cite пишет:
> https://refactoring.guru/ru/design-patterns/state
> естественно это все без VCL компонентов... чистый рантайм код на базовых классах...

именно так и надо разбирать азы.
а не замешивать в котлетный фарш ещё и мух, как это пытается сделать ТС,
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831697
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladDimonkaТаким образом для каждого состояния можно компоновать различные уникальные и не уникальные наборы действий. Ну и соответственно иметь возможность расширять список возможных действий.
А сами процедуры для набора ShipActions ведь все равно где-то надо прописывать. По итогу количество кода будет таким же или еще больше. Их надо будет прописывать в любом случае. Только количеством действий для каждого состояния можно будет управлять гораздо гибче.
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831726
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий28.06.2019 13:21, X-Cite пишет:
> https://refactoring.guru/ru/design-patterns/state
> естественно это все без VCL компонентов... чистый рантайм код на базовых классах...

именно так и надо разбирать азы.
а не замешивать в котлетный фарш ещё и мух, как это пытается сделать ТС,

Я эту ссылку сам уже приводил. А первый код - был пример того, как сейчас и как не надо делать. Вопрос был - как применить этот шаблон для VCL - вы в итоге к тому же самому меня и привели - к моему же вопросу.
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831730
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimonkasvnvladпропущено...

А сами процедуры для набора ShipActions ведь все равно где-то надо прописывать. По итогу количество кода будет таким же или еще больше. Их надо будет прописывать в любом случае. Только количеством действий для каждого состояния можно будет управлять гораздо гибче.
Имеется в виду, что для каждого состояния доступно разное количество действий и не все надо дублировать в каждом классе, а только те, которые возможны для данного состояния автомата?
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831750
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladИмеется в виду, что для каждого состояния доступно разное количество действий и не все надо дублировать в каждом классе, а только те, которые возможны для данного состояния автомата? Примерно так. Можно для действий также предусмотреть визуальные имена и также считывать их из состояния корабля. И исходя из всего этого строить интерфейс.
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39831780
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать еще посмотреть книгу "Hands‑On Design Patterns with Delphi" Primož Gabrijelčič'а:

авторThe last pattern in this chapter, state, allows an object to change its behavior on demand.
This is especially useful when an object implements an algorithm that goes through
different execution states. If the object's internal behavior changes when its state is changed,
you've got an excellent candidate for a state pattern.
В книге расписаны все основные шаблоны и анти-шаблоны проектирования в применении их к Delphi.
Качнуть можно хотя бы в чате телеграмма по Delphi:
https://t.me/Delphi_Lazarus
...
Рейтинг: 0 / 0
Шаблоны проектирования в Delphi
    #39832545
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

спасибо, посмотрел пример, вроде прояснилось.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Шаблоны проектирования в Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]