龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

JavaScript设计模式之抽象工厂及工厂方法模式(1)(2)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
实例分析 在开始工厂模式之前,有必要先介绍下简单工厂的说法,为了避免在客户程序的对象出现"if...else..."代码难以扩展以及维护,这里创建一个工厂类

实例分析

在开始工厂模式之前,有必要先介绍下简单工厂的说法,为了避免在客户程序的对象出现"if...else..."代码难以扩展以及维护,这里创建一个工厂类来封装这些对象,那这个就应用了简单工厂的方式。

这个场景是这样,有个博客网站,在网站中用户分为几种类型,我这里暂且暂且分为游客,博客会员,超级管理员三种用户权限:

◆游客只能进行简单的查看博客的文章,个人资料等等;

◆博客会员还可以对自己的博客进行管理;

◆超级管理员还可以对于博客系统后台进行管理。

在开始介绍之前,先贴出前两篇介绍的一些接口和类继承的JS文件InterfaceAndClass.js,这里主要要说的是类继承的写法:

function inheritClass(subClass, superClass)
{    
    var Func = function() {};
    for(p in superClass.prototype)
    {
        Func.prototype[p] = superClass.prototype[p];
    }
    subClass.prototype = new Func();
    subClass.prototype.constructor = subClass;
}

这里将父类superClass原型的所有方法赋值给新创建的函数类,之后把函数类的原型赋值于子类subClass原型中。

一、现在先对JavaScript简单工厂进行介绍:

1. 添加用户类型接口IMember.js:

var IMember = new Interface("IMember", [["getMemberInfo"]]);

getMemberInfo做为IMember接口的接口方法。

2.  添加三个具体用户类型的类Guest.js,BlogMember.js,SuperAdmin.js,继承IMember接口:

//游客类
function Guest() { 
    Interface.registerImplements(this, IMember); //继承IMember接口
}
Guest.prototype = {
    getMemberInfo : function() {
        return "游客";
    },
    getData : function() {
        return "";
    }
}

//博客会员类
function BlogMember() {
    Interface.registerImplements(this, IMember);
}
BlogMember.prototype = {
    getMemberInfo : function() {
        return "博客会员";
    },
    getData : function() {
        return "";
    }
}

//超级管理员类
function SuperAdmin() {
    Interface.registerImplements(this, IMember);
}
SuperAdmin.prototype = {
    getMemberInfo : function() {
        return "超级管理员";
    }, 
    getData : function() {
        return "";
    }
}
精彩图集

赞助商链接