Каковы некоторые примеры реализации шаблонов проектирования с использованием JavaScript?

Я программист средней квалификации, использующий JavaScript, но я не гуру. Я знаю, что с ним можно делать довольно мощные вещи, я просто не видел ничего, кроме довольно простых манипуляций с DOM. Мне интересно, могут ли люди предоставить несколько примеров традиционных концепций шаблонов проектирования, таких как Factory Method, Singleton и т. д., С использованием JavaScript. В каких случаях эти шаблоны можно использовать в Интернете?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
19
0
7 069
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Я подозреваю, что могут - вот пример синглтона:

Шаблон проектирования singleton в JavaScript

Ссылка в ответ мертва.

Pang 28.04.2017 03:29

@jamting:

The singleton design pattern in JavaScript

Боже ты мой. У меня нет слов.

To OP: да, в каком-то смысле, конечно, можно, но некоторые шаблоны, как вы к ним привыкли, не так заметны, как в Java. Например, singleton будет просто объектом:

var singleton = {
    sayHello: function() {
       alert("Hello!")
    }
};

В Википедии есть пример Фабрика в JS.

Конечно, могут. Вот книга на эту тему:
Шаблоны проектирования Pro JavaScript
Вот пример паттерна Factory:
Заводской шаблон в Javascript

Николай коснулся этого вопроса, но шаблоны проектирования несовместимы между языками, которые сильно отличаются друг от друга. Я читал раньше (и согласен с этим), что шаблон проектирования часто является признаком отсутствия функций в языке.

В качестве прекрасного примера шаблон "Factory" совершенно не нужен в некоторых языках, Ruby в качестве примера, о котором я думаю (потому что создание объекта - это просто метод в экземпляре класса):

# create a factory for MyObject
my_factory = MyObject
instance_1 = my_factory.new

# change the factory to another class
my_factory = MyOtherObject
instance_2 = my_factory.new

Всякий раз, когда вы применяете шаблон проектирования к другому языку, чем он был изначально разработан, убедитесь, что вы учитываете, ДЕЙСТВИТЕЛЬНО ли он необходим и какими способами вы можете улучшить его с помощью новых доступных языковых функций. Шаблоны проектирования - это просто руководство, вы всегда должны учитывать, действительно ли этот шаблон нужен для предполагаемого использования или его можно лучше адаптировать в вашем случае.

Ответ принят как подходящий

Я просто хотел добавить свой любимый шаблон JavaScript, который я узнал из Pro JavaScript Design Patterns, который уже рекомендовал Джонатан Раух.

Это одноэлементный шаблон пространства имен. По сути, вы создаете пространства имен через синглтоны, которые позволяют скрывать методы и переменные от внешнего использования. Скрытые / открытые методы фактически скрыты, потому что они определены в закрытии.

var com = window.com || {};
com.mynamespace = com.mynamespace || {};
com.mynamespace.newpackage = (function() {
    var myPrivateVariable = "hidden";
    var myPublicVariable = "exposed";

    function myPrivateMethod() {
        return "also hidden";
    }

    function myPublicMethod() {
        return "also exposed";
    }

    return {
        myPublicMethod: myPublicMethod,
        myPublicVariable: myPublicVariable
    };
})();

Стоит ли com.mynamespace.newpackage = (function () { ... }())? Просто любопытно, потому что JSLint жалуется. :)

Brian M. Hunt 02.06.2010 20:12

@ Брайан М. Хант: Я всегда считал это таким, каким я его писал, но похоже, что ваш способ работает в Chrome и Firefox, хотя я не знаю об IE и других. Тем не менее, некоторые скобки необходимы, в противном случае скобки, применяющие функцию, сообщаются как синтаксические ошибки.

Mike Stone 04.06.2010 01:59

@Brian: Это действительно зависит от стиля, вы можете сделать это в любом случае.

nyuszika7h 11.03.2011 00:44

Недавно я использовал Класс лучшей анимации Берни, который широко использует шаблон проектирования Стратегия. Берни отлично описывает, почему следует использовать шаблон стратегии, но, к сожалению, не объясняет, как именно работает код. Опять же, при использовании справочника по шаблонам проектирования взгляните на код и комментарии в animator.js, чтобы получить хороший пример того, как использовать шаблон стратегии.

Пример:

// This object controls the progress of the animation 
ex1 = new Animator();
// The Animator's subjects define its behaviour 
ex1.addSubject(updateButton);
function updateButton(value) {
    $('ex1Button').innerHTML = "Progress: " + Math.round(value * 100) + "%";
}

// now click below: each click to the button calls ex1.toggle()

Я хотел бы добавить сюда то, что я изучал как группа, с обсуждением шаблонов проектирования как на C#, так и на JavaScript. Во время встречи меня больше всего привлекало то, что программисты, работающие с C#, пишут коды на JavaScript, и то же самое для тех, кто занимается JavaScript. После того, как я ухожу с собрания, я стараюсь узнать больше дома и вести блог здесь http://tech.wowkhmer.com/category/Design-Patterns.aspx как для C#, так и для JavaScript.

Ссылка в ответ мертва.

Pang 27.04.2017 09:58

Слушать Джастину Диазу говорит о шаблоне проектирования для Javascript. Доклад также основан на его книге «Pro Javascript Techniques», упомянутой выше. Речь длится около 45 минут на Google I / O.

Как эта практика называется в JavaScript?

Это шаблон проектирования с автоматическим вызовом. Я никогда не видел этого, пока не начал писать сценарии Javascript.

Есть хорошая онлайн-книга свободный Адди Османи, знакомящая с шаблонами проектирования Javascript: Основные шаблоны проектирования JavaScript для начинающих, Том 1

Он также упоминает здесь в своей книге.

inetphantom 24.06.2016 10:20

Другие вопросы по теме