Я использовал бы JavaScript для представления формы. Функция была бы инициирована событием OnKeyPress элемента формы и обнаружит, была ли клавиша Enter выбрана. Если это верно, это отправит форму.
Вот две страницы, которые дают методы о том, как сделать это: 1 , 2 . На основе их вот пример использования (на основе здесь ):
Оба шаблона делегируют базовый класс, который имеет несколько производных, но только в шаблоне состояния эти производные классы содержат ссылку на класс контекста.
Другой способ взглянуть на это состоит в том, что шаблон стратегии является более простой версией шаблона состояния; подшаблон, если хотите. Это действительно зависит от того, хотите ли вы, чтобы производные состояния содержали ссылки обратно на контекст (например, хотите ли вы, чтобы они вызывали методы в контексте).
Для получения дополнительной информации: Роберт С. Мартин (& Мика Мартин) отвечает на этот вопрос в своей книге «Agile Principles, Patterns and Practices in C #». ( http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258 )
Разница обсуждается в http://c2.com/cgi/wiki?StrategyPattern . Я использовал шаблон стратегии, позволяющий выбирать различные алгоритмы в рамках общей структуры для анализа данных. Благодаря этому вы можете добавлять алгоритмы, не меняя общую структуру и ее логику.
Типичным примером является то, что у вас есть среда для оптимизации функции. Фреймворк устанавливает данные и параметры. Шаблон стратегии позволяет выбирать такие алгоритмы, как кратчайшие спуски, сопряженные градиенты, BFGS и т. Д., Не изменяя структуру.
getStatus ()
, который будет возвращать разные статусы в зависимости от
состояние объекта, но вызывающий метод не должен быть
кодируется по-разному для учета каждого потенциального состояния. Шаблон стратегии включает перемещение реализации алгоритма из класса хоста в отдельный класс. Это означает, что класс хоста не должен предоставлять реализацию каждого самого алгоритма, что может привести к нечистому коду.
Алгоритмы сортировки обычно используются в качестве примера, поскольку все они выполняют одни и те же действия (сортировку). Если каждый различающийся алгоритм сортировки помещен в свой собственный класс, то клиент может легко выбрать, какой алгоритм использовать, и шаблон обеспечивает простой способ доступа к нему.
Шаблон состояния включает изменение поведения объекта, когда состояние объекта объект меняется. Это означает, что класс хоста не обеспечивает реализацию поведения для всех различных состояний, в которых он может находиться.
Стратегия представляет собой объекты, которые что-то «делают» с одинаковыми начальными и конечными результатами, но внутренне используют разные методологии. В этом смысле они аналогичны представлению реализации глагола. Шаблон состояния OTOH использует объекты, которые что-то «являются» - состояние операции. Хотя они также могут представлять операции с этими данными, они больше похожи на представление существительного, чем глагола, и приспособлены для конечных автоматов.