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

StackOverflow https://stackoverflow.com/questions/24642

Вопрос

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

Это было полезно?

Решение

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

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

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
    };
})();

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

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

В качестве прекрасного примера можно привести шаблон «Фабрика», который совершенно не нужен в некоторых языках, в качестве примера я имею в виду 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: Основные шаблоны проектирования JavaScript для начинающих, том 1

@jamting:

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

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

Для ОП:да, в каком-то смысле конечно можно, но некоторые закономерности, как ты к ним привык, не так заметны, как в Java.Например, синглтон будет просто объектом:

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

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

Я недавно использовал Лучший урок анимации Берни который широко использует Стратегия Шаблон проектирования.Берни отлично объясняет, почему следует использовать шаблон стратегии, но, к сожалению, не объясняет, как именно работает код.Опять же, при использовании справочника по шаблонам проектирования взгляните на код и комментарии в файле 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()

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

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

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

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

Конечно, они могут.Вот книга на эту тему:
Профессиональные шаблоны проектирования JavaScript
Вот пример шаблона Фабрика:
Фабричный шаблон в Javascript

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top