Game Programming Patterns / Паттерны программирования в играх: 1.1. Command
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
redo: function() { Mingun 30.04.14 в 16:44 |
|
|
unit. Mingun 30.04.14 в 16:44 |
||
|
moveTo(xBefore, yBefore) Mingun 30.04.14 в 16:44 |
||
|
; Mingun 30.04.14 в 16:44 |
||
|
} Mingun 30.04.14 в 16:44 |
||
|
}; Mingun 30.04.14 в 16:44 |
||
|
} Mingun 30.04.14 в 16:44 |
||
|
Если вы чувствуете себя комфортно, используя функциональный стиль, значит этот способ написания для вас естественен. Mingun 01.05.14 в 10:25 Если вам удобно использовать стиль функций, то данный способ будет естественным. IngaJolly 05.05.14 в 18:52 |
||
|
Если же нет, я надеюсь, что данная глава немного помогла вам на этом пути. Mingun 01.05.14 в 10:25 |
||
|
Для меня же урок в том, что польза от шаблона Команда действительно показывает, как полезна функциональная парадигма для многих задач. Mingun 01.05.14 в 10:28 По моему мнению, урок здесь в том, что польза паттерна "команда" действительно показывает, насколько парадигма функционального программирования подходит для многих задач. IngaJolly 05.05.14 в 18:55 |
||
|
Смотрите также Mingun 30.04.14 в 16:46 См. также IngaJolly 15.05.14 в 19:56 |
||
|
В конечном итоге, вы можете прийти к большому количеству различных классов команд. Mingun 01.05.14 в 10:30 |
||
|
Для упрощения реализации часто бывает полезно определить конкретный базовый класс с кучей удобных высокоуровневых методов, чтобы производные команды могли комбинировать их для определения их собственного поведения. Mingun 01.05.14 в 10:33 Для того чтобы облегчить их реализацию, часто полезно определить конкретный базовый класс с набором удобных высокоуровневых методов, которые дочерние команды могут компоновать, чтобы определить их поведение. IngaJolly 05.05.14 в 18:59 |
||
|
Эти шаги превращают главный метод команды execute в Подкласс песочницы. Mingun 01.05.14 в 10:35 Это превращает главный исполняемый метод команды в паттерн Subclass Sandbox ("Подкласс песочница"). IngaJolly 05.05.14 в 19:01 |
||
|
В наших примерах мы явно выбирали, какой актёр будет обрабатывать команду. Mingun 01.05.14 в 10:38 В наших примерах был явный выбор актора для обработки команды. IngaJolly 24.08.14 в 17:57 |
||
|
В некоторых случаях, особенно когда ваша модель объекта иерархическая, это не может быть определено заранее. Mingun 01.05.14 в 10:41 В некоторых случаях, особенно когда ваша модель объекта иерархическая, это может быть не так явно. IngaJolly 05.05.14 в 19:03 |
||
|
Объект может сам отреагировать на команду, или он может принять решение передать её подчинённому объекту. Mingun 01.05.14 в 10:42 Объект может сам ответить на команду или решить делегировать ее некоему подчиненному объекту. IngaJolly 05.05.14 в 19:04 |
||
|
Если вы сделаете это, вы откроете для себя Цепочку ответственности. Mingun 01.05.14 в 10:44 Если вы сделаете так, то получите паттерн Chain of Responsibility ("Цепочка обязанностей"). IngaJolly 24.08.14 в 17:59 |
||
|
Некоторые команды являются кусками чистого поведения без сохранения состояния, например, команда JumpCommand в первом примере. Mingun 01.05.14 в 10:47 Некоторые команды - куски чистого поведения без состояний, например, JumpCommand из первого примера. IngaJolly 24.08.14 в 18:00 |
||
|
В таких случаях, если вы имеете более одного экземпляра такого класса, вы просто засоряете память, поскольку все экземпляры эквивалентны. Mingun 01.05.14 в 10:48 В таких случаях иметь более одного экземпляра класса значит иметь лишние потери памяти, так как все экземпляры эквивалентны. IngaJolly 05.05.14 в 19:06 |
||
|
Здесь вам поможет шаблон Приспособленец. Mingun 01.05.14 в 10:49 Здесь вам поможет паттерн Flyweight ("Приспособленец"). IngaJolly 05.05.14 в 19:07 |
+2 |
