Готовый перевод Learning JavaScript Design Patterns / Шаблоны проектирования JavaScript: Классификация известных шаблонов
Из моих ранних опытов изучения шаблонов проектирования, я нашел следующий таблицу очень полезной для напоминанием о том, что ряд шаблонов может предложить - она охватывает 23 Шаблона проектирования упомянутые в GoF. Оригинальная таблица была обобщена Элиз Нильсен еще в 2004 году и я изменил ее, это было необходимо, для соответствия нашей дискуссии в этом разделе книги.
Я рекомендую использовать эту таблицу в качестве справочника, но помните, что существует целый ряд дополнительных шаблонов, которые не упомянуты здесь, но будут обсуждаться позже в этой книге.
Краткая заметка о классах
Имейте в виду, что в этой таблице будут шаблоны, которые ссылаются на понятие «классы». JavaScript является менее приспособленным к классам, однако классы могут быть воспроизведены с помощью функций.
Наиболее распространенный подход к достижению этой цели является, определение функции JavaScript, где мы затем создать объект, используя новое ключевое слово. это может быть использовано, чтобы помочь определить новые свойства и методы для объекта следующим образом:
// "Класс" Автомобиль(Car)
function Car( model ) {
this.model = model;
this.color = "silver";
this.year = "2012";
this.getInfo = function () {
return this.model + " " + this.year;
};
}
Затем мы можем создать экземпляр объекта с помощью конструктора Car мы определили выше это как:
var myCar = new Car("ford");
myCar.year = "2010";
console.log( myCar.getInfo() );
Для других способов определения "класса", используя JavaScript, см. полезный пост Стяна Стефанова о них.
Перейдем теперь к таблице.
Создание -- Основываясь на концепции создания объекта. -- Класс -- Фабричный метод -- Это делает экземпляр нескольких производных классов на основе сопряженных данных или событий. -- Объект Абстрактный -- Создает экземпляр нескольких семейств классов без детализации конкретных классов. -- Строитель -- Разделяет создание объекта от его представления, всегда создает тот же тип объекта. Прототип -- Инициализации экземпляра, используемый для копирования или клонирования. Синглтон -- Класс только одного экземпляра с точками глобального доступа.
Структура -- Основан на идее блоков построения объектов -- Класс -- Адаптер -- Подобные интерфейсы различных классов, следовательно, классы могут работать вместе, несмотря несовместимые интерфейсы -- объект -- Адаптер -- Подобные интерфейсы различных классов, следовательно, классы могут работать вместе, несмотря на несовместимые интерфейсы -- Мост -- Разделяет интерфейс объекта от его реализации так что оба могут изменяться независимо -- Композитный -- структура простых и составных объектов, что делает весь объект больше, чем просто сумма его частей. -- Декоратор -- Динамически добавляет альтернативный обработку объектов. -- Фасад -- Включает единственный класс, который скрывает сложность всей подсистемы. -- Приспособленец -- Небольшой экземпляр, используемый для эффективного обмена информацией, которая содержится в другом месте. -- Прокси -- Прототип, представляющий настоящий объект.
Поведенческий -- Основан манере деятельности объекта и работы вместе.
Класс -- Интерпретатор -- Способ включить элементы языка в приложении, чтобы соответствовать грамматике предполагаемого языка. -- Шаблонный Метод -- Создает оболочку алгоритма в методе, а после прокладывает точные шаги к подклассу.
Объект -- Цепочка Ответственности -- Способ передачи запроса между цепочкой объектов, чтобы найти объект, который может обрабатывать запрос. -- Команда -- Инкапсуляция запроса команды как объекта, с тем чтобы, логировать и / или ставить в очередь запросы, и обеспечивать обработку ошибок для необработанных запросов. -- Итератор -- Последовательно дает доступ к элементам коллекции, не зная внутреннюю работу в коллекции. -- Посредник -- определяет упрощенную связь между классами, чтобы предотвратить группу классов ссылающуюся явно друг на друга. -- Хранитель -- Захват внутреннего состояние объекта, чтобы имелась возможность восстановить его позже. -- Наблюдатель -- Способ уведомления изменения к ряду классов для обеспечения согласованности между классами. -- Состояние -- Альтернативное поведение объекта при изменении его состояния -- Стратегия -- Инкапсулирует алгоритм внутри класса, отделяющей выбор от реализации -- Посетитель -- Добавляет новую операцию в класс без изменения класса
Переведено на Нотабеноиде
http://notabenoid.org/book/42061/161339
Переводчики: On_and_On
Настройки
Готово:
