// 抽象工厂方法
var Book = function(subType, superType) {
if (typeof Book[supeType] === 'function' ) {
function F() {};
F.prototype = new Book[subType]();
subType.constructor = subType;
subType.prototype = new F();
} else {
throw new Error('未创建该抽象类');
}
}
// 读库抽象类
Book.Duku = function() {
this.type = 'duku';
};
Book.Duku.prototype = {
getPrice : function() {
return new Error('抽象方法不能调用');
},
getName : function() {
return new Error('抽象方法不能调用');
}
};
// 计算机图书抽象类
Book.Computer = function() {
this.type = 'computer';
}
Book.Computer.prototype = {
getPrice : function() {
return new Error('抽象方法不能调用');
},
getName : function() {
return new Error('抽象方法不能调用');
}
};
// 历史书抽象类
Book.History = function() {
this.type = 'history';
}
Book.History.prototype = function() {
getPrice : function() {
return new Error('抽象方法不能调用');
},
getName : function() {
return new Error('抽象方法不能调用');
}
}
// 读库子类
var DK = function(price, name) {
this.price = price;
this.name = name;
}
// 抽象工厂实现对Duku抽象类的继承
Book(DK, 'Duku');
DK.prototype.getPrice = function() {
return this.price;
}
DK.prototype.getName = function() {
return this.name;
}
......
// 单例测试
var duku1501 = new DK(30.00, duku1501);
console.log(duku1501.getPrice()); // 30.00
console.log(duku1501.getName()); // duku1501
抽象工厂模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 说明:在我理解中,这里所谓的抽象,其实就是制定某一个接口规范。具体体现在代码里,就是设置一个基类,基类遵守某一套接...
- 一、引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)),还雇了司...
- 哲学上说“是什么,为什么,怎么用”是认识问题的逻辑思维过程. 本文将以厂长工厂造车为例子讲述这三种设计模式。 简单...