随着Javascript在未来几年内将成为Web上无处不在的编程语言,每隔五分钟就会弹出新的框架,并且事件驱动的编程在服务器端和客户端均处于领先地位:
作为Java语言开发人员,您是否认为传统设计模式比其他语言/环境重要或重要?
请命名您作为Javascript开发人员经常使用的前三种设计模式,并举例说明它们如何对您的Javascript开发有所帮助。
随着Javascript在未来几年内将成为Web上无处不在的编程语言,每隔五分钟就会弹出新的框架,并且事件驱动的编程在服务器端和客户端均处于领先地位:
作为Java语言开发人员,您是否认为传统设计模式比其他语言/环境重要或重要?
请命名您作为Javascript开发人员经常使用的前三种设计模式,并举例说明它们如何对您的Javascript开发有所帮助。
Answers:
作为Java语言开发人员,您是否认为传统设计模式比其他语言/环境重要或重要?
经典设计模式不适用于JavaScript。
适用的是编写模块化和功能性代码。
您应该混合使用构造函数和一流函数。
作为JavaScript开发人员,我个人致力于将JavaScript视为LISP,而不是Java。因此,尝试模拟monad和高级功能样式代码,而不是模拟经典的OOP代码。
请命名您作为Javascript开发人员经常使用的前三种设计模式,并举例说明它们如何对您的Javascript开发有所帮助。
同样,设计模式并没有真正应用那么多,但以下是三个重要的构造。
new
请留下某种背景,与使用传统设计模式进行相同类型的代码相比,我可以展示这些技术的示例。
让我们看一些经典的设计模式,以及如何在js中实现它们以及更适合js本身的替代模式:
观察者模式:
在node.js
这很简单events.EventEmitter
。在jQuery
这$.fn.bind
&& $.fn.trigger
。在backbone
这是Backbone.Events.trigger
和Backbone.Events.bind
。这是日常代码中使用的非常常见的模式。
我从不停止思考,“嘿,我在这里使用观察者模式!”。不,这只是传递消息的低级方法或级联更改的方法。
例如,在主干中,所有MVC视图都绑定到models onchange
事件,因此更改模型会将所有更改自动级联到视图。是的,这是一个功能强大的模式,但是它在事件驱动的编程中非常普遍,没有意识到到处都在使用它。
在WebSocket
协议中,我们有.on
用来绑定on("message", ...
事件的协议。同样,这是非常普遍的,但是它是流中的观察者,而不是基于经典OOP的观察者while (byte b = Stream.ReadNextByte())
。
这些都是Observer模式的强大功能。但这不是您使用的模式。这是该语言的简单部分。这只是代码。
纪念图案:
这只是JSON。它允许您序列化对象的状态,以便您可以撤消操作。
function SomeObject() {
var internalState;
this.toJSON = function() {
return internalState;
}
this.set = function(data) {
internalState = data;
}
this.restore = function(json) {
internalState = JSON.parse(json);
}
}
var o = new SomeObject();
o.set("foo"); // foo
var memento = JSON.stringify(o);
o.set("bar"); // bar
o.restore(memento);
在JavaScript中,我们本机支持纪念品的API。只需定义toJSON
在任何对象上调用的方法即可。调用时JSON.stringify
,它将在内部调用.toJSON
对象以获取要序列化为JSON的真实数据。
这使您可以轻松制作代码快照。
再次,我没有意识到这是一种纪念品模式。这只是使用JSON序列化工具。
状态模式/策略模式:
您不需要状态模式。您具有一流的功能和动态类型。只需注入函数或动态更改属性。
将此答案作为主观意见。
作为Java语言开发人员,您是否认为传统设计模式比其他语言/环境重要或重要?
如果您指的是传统的设计模式(例如Gang of Four),那么大多数技术都是与语言/平台无关的,例如“编程到接口,而不是实现”或“在类继承上具有重要的对象组成”,并且对JavaScript开发人员同样重要。
可能或不需要像其他语言一样或频繁地使用诸如创造,结构和行为等更具体的模式,因为语言功能会在很大程度上影响其使用。因此,某些语言(包括JavaScript)会根据其提供的功能或语法糖而拥有自己的设计模式。
总的来说,我会说传统设计模式与其他语言一样重要,但是JavaScript特定模式比传统模式更重要。
列出您作为JavaScript开发人员经常使用的前三种设计模式,并举例说明它们如何对您的JavaScript开发有所帮助
在基本的JavaScript设计模式中,我主要使用以下模式:
1.构造器模式(带有原型)
尤其是在编写node.js东西时在服务器端,因为它虽然缺乏本地封装,却非常适合编写模块。如果您在GitHub上浏览存储库,那么它在许多其他开发人员中也很流行,因此熟悉这种模式可以帮助您更好地理解其他代码。
2.显示模块模式
提供模块化的封装。
3.干式
尽管每个开发人员都应尽可能(不)尽可能地使用它,但这是特定于场景的。
您作为Javascript开发人员是否认为传统设计模式重要还是不重要
它们至关重要。
这是因为可重用解决方案的概念可以超越语言。-语法更改-实现更改-模式概念仍然存在。
任何语言的开发人员都可以通过学习模式而不是语法来学习高级JS。那些不知道这一点的人会错过。
请为您指定Java开发人员经常使用的前三种设计模式
有些模式会经常使用,有些人会反对这种模式。但是,很高兴知道它们,因为它们在高级JS中极为常见且功能强大。
1-命名空间-将代码包装在一个对象中。
var x =(function(){})();
2-ObjectConfiguration,类似工厂的模式。-将对象传递给函数,而不是一堆var。
var product = factory({});
3-回调功能。-传递一个函数作为参数,当任务完成时被调用。
函数longTask(function(){//完成后打电话给我});
就像我说的那样,有些人可能会争辩说,这些不是模式,但是它们非常常见且非常强大,应予提及,因为它们确实是解决常见问题的非常有用的可重用解决方案。这是设计模式的定义。
很好的问题。
希望能有所帮助。