|
|
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
DimonkaВсе вышеуказанные "действия" тоже можно заменить шаблонными методами. Например посмотреть в сторону паттерна "стратегия". Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Таким образом для каждого состояния можно компоновать различные уникальные и не уникальные наборы действий. Ну и соответственно иметь возможность расширять список возможных действий. А сами процедуры для набора ShipActions ведь все равно где-то надо прописывать. По итогу количество кода будет таким же или еще больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 11:55 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
svnvladkealon(Ruslan)пропущено... когда вы присваиваете контролу другой Action у него меняется Caption, Enabled, Checked(если есть) и само собой метод OnClick или аналоги т.е. всем отображением и действиями управляет уже новый присвоенный Action Ну там 10-20 контролов (кнопок). И кроме кнопок (видимых элементов), есть еще поля и таблицы в базе данных, которым присваиваются значения и выполняются некие процедуры. Вы предлагаете шаблон State сделать наизнанку. Там подменяется класс, внутри которого ряд процедур, на другой класс с таким же набором процедур. А вы предлагаете оставить класс, а менять имена процедур для каджой кнопки. Зачем, если есть уже отработанный шаблон?откуда ж я знаю зачем вам это надо, формально это тоже самое я даже не знаю зачем вам на каждый учавствующий контрол что-то менять, если вы в итоге свели всё к 5-6 методам, то логично предположить, что для смены состояния достаточно указать эти 5-6 новых методов. Как это сделать, я вариант предложил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 12:08 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)я даже не знаю зачем вам на каждый учавствующий контрол что-то менять, если вы в итоге свели всё к 5-6 методам, то логично предположить, что для смены состояния достаточно указать эти 5-6 новых методов. Как это сделать, я вариант предложил Привел пример программы, чтобы увидеть пример реализации шаблона State на Delphi. Таков был вопрос. Везде в примерах пишут на C++ или на Java, что довольно затруднительно понять, т.к. там другие особенности программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 12:18 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
https://refactoring.guru/ru/design-patterns/state естественно это все без VCL компонентов... чистый рантайм код на базовых классах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 13:21 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
28.06.2019 13:21, X-Cite пишет: > https://refactoring.guru/ru/design-patterns/state > естественно это все без VCL компонентов... чистый рантайм код на базовых классах... именно так и надо разбирать азы. а не замешивать в котлетный фарш ещё и мух, как это пытается сделать ТС, Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 13:49 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
svnvladDimonkaТаким образом для каждого состояния можно компоновать различные уникальные и не уникальные наборы действий. Ну и соответственно иметь возможность расширять список возможных действий. А сами процедуры для набора ShipActions ведь все равно где-то надо прописывать. По итогу количество кода будет таким же или еще больше. Их надо будет прописывать в любом случае. Только количеством действий для каждого состояния можно будет управлять гораздо гибче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 15:35 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий28.06.2019 13:21, X-Cite пишет: > https://refactoring.guru/ru/design-patterns/state > естественно это все без VCL компонентов... чистый рантайм код на базовых классах... именно так и надо разбирать азы. а не замешивать в котлетный фарш ещё и мух, как это пытается сделать ТС, Я эту ссылку сам уже приводил. А первый код - был пример того, как сейчас и как не надо делать. Вопрос был - как применить этот шаблон для VCL - вы в итоге к тому же самому меня и привели - к моему же вопросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 16:56 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
Dimonkasvnvladпропущено... А сами процедуры для набора ShipActions ведь все равно где-то надо прописывать. По итогу количество кода будет таким же или еще больше. Их надо будет прописывать в любом случае. Только количеством действий для каждого состояния можно будет управлять гораздо гибче. Имеется в виду, что для каждого состояния доступно разное количество действий и не все надо дублировать в каждом классе, а только те, которые возможны для данного состояния автомата? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 17:06 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
svnvladИмеется в виду, что для каждого состояния доступно разное количество действий и не все надо дублировать в каждом классе, а только те, которые возможны для данного состояния автомата? Примерно так. Можно для действий также предусмотреть визуальные имена и также считывать их из состояния корабля. И исходя из всего этого строить интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 17:48 |
|
||
|
Шаблоны проектирования в Delphi
|
|||
|---|---|---|---|
|
#18+
Можно попробовать еще посмотреть книгу "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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2019, 18:58 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39831569&tid=2039312]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 487ms |

| 0 / 0 |
