Сведения о вопросе

HEIGTH

01:27, 25th August, 2020

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

Просмотров: 440   Ответов: 10

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



  Сведения об ответе

ASER

22:51, 22nd August, 2020

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

Это шаблон пространства имен 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
    };
})();


  Сведения об ответе

dumai

10:18, 10th August, 2020

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

Как идеальный пример, шаблон "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

Всякий раз, когда вы применяете шаблон дизайна к другому языку, чем он был изначально разработан, убедитесь, что вы считаете, если это REALLY необходимо, и какие способы вы могли бы улучшить его с помощью новых языковых функций, доступных. Шаблоны дизайна - это всего лишь руководство, вы всегда должны учитывать, действительно ли вам нужен шаблон для использования, или он может быть принят в вашем случае лучшим образом.


  Сведения об ответе

#hash

16:34, 21st August, 2020

@jamting:

Шаблон дизайна singleton в JavaScript

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

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

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

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


  Сведения об ответе

lool

17:50, 1st August, 2020

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


  Сведения об ответе

ASER

12:37, 23rd August, 2020

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


  Сведения об ответе

SILA

05:38, 12th August, 2020

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

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


  Сведения об ответе

SILA

04:44, 16th August, 2020

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


  Сведения об ответе

PAGE

21:10, 28th August, 2020

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

Шаблон дизайна singleton в JavaScript


  Сведения об ответе

piter

22:35, 25th August, 2020

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



  Сведения об ответе

baggs

23:19, 21st August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться