/* 登录警示类 */
var LoginAlert = function ( text ) {
this.content = text;
}
LoginAlert.prototype.show = function () {
// 显示警示框
}
/* 登录确认类 */
var LoginConfirm = function ( text ) {
this.content = text;
}
LoginConfirm.prototype.show = function () {
// 显示确认框
}
/* 登录提示框 */
var LoginPrompt = function ( text ) {
this.content = text;
}
LoginPrompt.prototype.show = function () {
// 显示提示框
}
/* 第一种,简单工厂模式:如果类太多,那就提供一个工厂函数 */
var PopFactory = function ( name ) {
switch ( name ) {
case 'alert':
return new LoginAlert();
case 'confirm':
return new LoginConfirm();
case 'prompt':
return new LoginPrompt();
}
}
//##################################################
/* 第二种,简单工厂模式 */
var createPop = function ( type, text ) {
// 创建一个对象,并对该对象做出扩展
var o = new Object;
o.content = text;
o.show = function () {
// 显示相同部分
switch ( type ) {
case 'alert':
// 警示框差异部分
break;
case 'confirm':
// 确认框差异部分
break;
case 'prompt':
// 提示框差异部分
break;
}
}
return o;
}
var userNameAlert = createPop( 'alert', '用户名只能是字母和数字' )
队长点评:
第一种通过类实例化对象创建的,第二种通过创建一个新对象然后包装增强其属性和功能来实现的。他们之间的差异性也造成前面通过类创建的对象,如果这些类继承同一个父类,那么父类的原型上的方法也可以共用,而后面寄生的方式创建的对象都是一个新的个体,所以他们的方法就不能共用了.具体的使用中选择哪种看实际的需求。
本文实例来源于张容铭大神写的《JavaScript设计模式》
网友评论