工厂方法模式
·
Yin灏
/**
* 安全模式类
* 保证不使用 new 关键字也可以正常运行类
*/
var Demo = function () {};
Demo.prototype = {
show: function () {
console.log("成功获取");
},
};
var d = new Demo();
d.show(); // 成功获取
var d = Demo();
d.show(); // TypeError
/**
* 解决上面的问题
*/
var Demo = function () {
if (!(this instanceof Demo)) {
return new Demo();
}
};
var d = Demo();
d.show(); // 成功获取
/**
* 安全的工厂方法
*/
// 安全模式创建的工厂类
var Factory = function (type, content) {
if (this instanceof Factory) {
var s = new this[type](content);
return s;
} else {
return new Factory(type, content);
}
};
// 工厂原型中设置创建所有类型数据对象的基类
Factory.prototype = {
Java: function (content) {
//...
},
JavaScript: function (content) {
//...
},
UI: function (content) {
//...
},
pgp: function (content) {
//...
},
};
var data = [
{
type: "JavaScript",
content: "JavaScript 哪家强",
},
{
type: "Java",
content: "Java 哪家强",
},
{
type: "php",
content: "php 哪家强",
},
{
type: "UI",
content: "UI 哪家强",
},
{
type: "UI",
content: "UI 哪家强",
},
{
type: "JavaScript",
content: "JavaScript 哪家强",
},
{
type: "JavaScript",
content: "JavaScript 哪家强",
},
];
for (var i = 6; i >= 0; i--) {
Factory(s[i].type, s[i].content);
}