我是一个熟练的程序员,使用JavaScript,但我不是大师。 我知道你可以用它做一些非常强大的东西,除了相当基本的DOM操作之外我还没有看到太多东西。 我想知道人们是否可以使用JavaScript提供一些传统设计模式概念的例子,例如Factory Method,Singleton等。 在什么情况下这些模式将用于网络?

===============>>#1 票数:8 已采纳

我只想添加我从Jonathan Rauch已经推荐的Pro JavaScript Design Patterns中学到的我最喜欢的JavaScript模式。

它是命名空间单例模式。 基本上,您通过单例创建名称空间,允许您隐藏外部使用的方法和变量。 隐藏/暴露方法实际上是隐藏的,因为它们是在闭包中定义的。

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

===============>>#2 票数:7

尼古拉谈到了这一点,但设计模式在具有巨大差异的语言之间并不一致。 我之前已经阅读过(并同意)设计模式通常是语言中缺少功能的标志。

作为一个完美的例子,在某些语言中,“Factory”模式是完全不必要的,Ruby正如我所想的那样(因为对象构造只是Class实例上的一个方法):

# 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

每当您将设计模式应用于与最初开发的语言不同的语言时,请确保您考虑它是否真的必要,以及您可以通过新的语言功能以何种方式改进它。 设计模式只是一个指南,您应该始终考虑您打算使用的模式是否真正需要,或者是否可以在您的情况下以更好的方式采用它。

===============>>#3 票数:3

@jamting:

JavaScript中的单例设计模式

哦,我的上帝。 我无语了。

OP:是的,当然你可以在某种意义上说,但是你习惯使用的某些模式并不像Java那样可见。 例如,singleton只是一个对象:

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

维基百科有一个JS的工厂示例。

===============>>#4 票数:3

Addy Osmani提供了一本很好的免费在线书籍,介绍了Javascript设计模式: 初学者必备的JavaScript设计模式,第1卷

===============>>#5 票数:2

我最近使用了Bernie的Better Animation Class ,它广泛使用了Strategy Design Pattern。 Bernie在描述为什么应该使用策略模式方面做得很好,但遗憾的是并没有准确解释代码是如何工作的。 然后,在使用Design Patterns参考时,请查看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()

===============>>#6 票数:1

这种做法在JavaScript中被称为什么?

这是自调用设计模式。 在我开始使用Javascripting之前,我从未见过它。

===============>>#7 票数:0

我怀疑他们可以 - 这是Singleton的一个例子:

JavaScript中的单例设计模式

===============>>#8 票数:0

当然可以。 这是一本关于这个主题的书:
专业JavaScript设计模式
这是Factory模式的一个例子:
Javascript中的工厂模式

===============>>#9 票数:0

Justin Diaz谈论Javascript的设计模式。 这个演讲也是基于他上面提到的Pro Javascript Techniques这本书。 Google I / O大约需要45分钟

===============>>#10 票数:0

我想在这里添加我作为一个小组学习的内容,讨论C#和JavaScript中的设计模式。 在会议期间,对我来说有什么花哨的事情是C#的人在JavaScript中编写代码,对JavaScript的人来说也是如此。 在我离开会议之后,我尝试在家里学习更多内容并在这里进行博客http://tech.wowkhmer.com/category/Design-Patterns.aspx以获取C#和JavaScript。

  ask by Aaron translate from so

未解决问题?本站智能推荐: