揭示模式用例
Revealing pattern usecase
我正在读一本名叫 "Learning javascript design patterns" 的书,作者是 Addy Osmani。这本书很棒。
有一个使用揭示设计模式的例子:
var myRevealingModule = (function () {
var privateVar = "Ben Cherry",
publicVar = "Hey there!";
function privateFunction() {
console.log( "Name:" + privateVar );
}
function publicSetName( strName ) {
privateVar = strName;
}
function publicGetName() {
privateFunction();
}
// Reveal public pointers to
// private functions and properties
return {
setName: publicSetName,
greeting: publicVar,
getName: publicGetName
};
})();
myRevealingModule.setName( "Paul Kinlan" );
现在,我当然明白它是如何工作的,但我的问题更简单 - 在常规的经典节点 webapp 中使用它的用例是什么?
假设我有一个汽车模块,我希望在我拥有的某些程序中创建它。在这种情况下,我看不出如何使用该模式。我怎样才能传递参数使 new Car(args)
?
我应该对单身人士使用这种模式吗?创建工厂?
JavaScript 是一种有点奇怪的语言,如果您不遵循最佳实践并且不熟悉 ECMA 标准,有时会做一些奇怪的事情。 JavaScript 语法中有许多奇怪的东西,其中之一就是自执行(自调用)函数......
您可以在此处阅读更多详细信息
http://blog.mgechev.com/2012/08/29/self-invoking-functions-in-javascript-or-immediately-invoked-function-expression/
您可以像这样传递参数:
https://jsfiddle.net/6bhn80oz/
此模式用于在公开 ("revealing") public 接口时封装一些私有状态。
这个模式可以有很多用例,但它的核心是展示如何将实现(私有变量)与 API(公开的函数)分开,这在 javascript.
只要你有一个有状态的模块,就使用它是个好主意。
要提供参数,只需公开一个接受参数的 API 函数,例如
return {
createCar: function(model, mileage) { ... }
}
我在angular1创建服务的时候经常用到。对我来说,更容易知道我可以在服务中访问哪些方法 and/or 变量,并将 return {}
之外的所有其他内容保密。
angular.module('myModule')
.factory('someService', function () {
function myFunction(){
}
return{
getSomething:myFunction
}
});
我正在读一本名叫 "Learning javascript design patterns" 的书,作者是 Addy Osmani。这本书很棒。
有一个使用揭示设计模式的例子:
var myRevealingModule = (function () {
var privateVar = "Ben Cherry",
publicVar = "Hey there!";
function privateFunction() {
console.log( "Name:" + privateVar );
}
function publicSetName( strName ) {
privateVar = strName;
}
function publicGetName() {
privateFunction();
}
// Reveal public pointers to
// private functions and properties
return {
setName: publicSetName,
greeting: publicVar,
getName: publicGetName
};
})();
myRevealingModule.setName( "Paul Kinlan" );
现在,我当然明白它是如何工作的,但我的问题更简单 - 在常规的经典节点 webapp 中使用它的用例是什么?
假设我有一个汽车模块,我希望在我拥有的某些程序中创建它。在这种情况下,我看不出如何使用该模式。我怎样才能传递参数使 new Car(args)
?
我应该对单身人士使用这种模式吗?创建工厂?
JavaScript 是一种有点奇怪的语言,如果您不遵循最佳实践并且不熟悉 ECMA 标准,有时会做一些奇怪的事情。 JavaScript 语法中有许多奇怪的东西,其中之一就是自执行(自调用)函数......
您可以在此处阅读更多详细信息
http://blog.mgechev.com/2012/08/29/self-invoking-functions-in-javascript-or-immediately-invoked-function-expression/
您可以像这样传递参数:
https://jsfiddle.net/6bhn80oz/
此模式用于在公开 ("revealing") public 接口时封装一些私有状态。
这个模式可以有很多用例,但它的核心是展示如何将实现(私有变量)与 API(公开的函数)分开,这在 javascript.
只要你有一个有状态的模块,就使用它是个好主意。
要提供参数,只需公开一个接受参数的 API 函数,例如
return {
createCar: function(model, mileage) { ... }
}
我在angular1创建服务的时候经常用到。对我来说,更容易知道我可以在服务中访问哪些方法 and/or 变量,并将 return {}
之外的所有其他内容保密。
angular.module('myModule')
.factory('someService', function () {
function myFunction(){
}
return{
getSomething:myFunction
}
});