初学javascript设计模式(三)组合模式第一遍遍阅读

来源:互联网 发布:越南芽庄网络怎么样 编辑:程序博客网 时间:2024/05/16 05:41
/*组合模式*//* 保存对象 */var SaveObj = {};/* 统一验证对象 */var Check = {    IsNull: function() {        if (this.GetVal().length > 0) {            return this.GetVal();        }        return false;    },    IsNaN: function() {        if (!isNaN(this.GetVal())) {            return this.GetVal();        }        return false;    }}/* 叶对象超类 这个超类是为了确保所有的叶对象*/var BackLeaf = function() { }BackLeaf.prototype.Test = function() {    throw Error("叶对象基类无法直接调用")};BackLeaf.prototype.GetVal = function() {    throw Error("叶对象基类无法直接调用")};/* 文本框叶对象 */var TextLeaf = function(obj, checkType) {    this._obj = $(obj);    this.checkType = checkType;    return this;};/* 继承叶对象超类 */TextLeaf.prototype = new BackLeaf();TextLeaf.prototype.Test = function() {    return Check[this.checkType].call(this);}TextLeaf.prototype.GetVal = function() {    return this._obj.val();}/* 组合对象 */var Combination = function() {    this.Count = [];    this.i = 0;}Combination.prototype.Add = function(obj) {    this.Count.push(obj);    this.i = this.Count.length}Combination.prototype.Test = function() {    var ret = [];    for (var i = 0; i < this.i; i++) {        var _t = this.Count[i].Test()        if (_t !== false) {            ret.push(_t);        }    }    return ret;}Combination.prototype.length = function() {    return this.Count.length;}//var c = new Combination();//c.Add(new TextLeaf("#aa", "IsNull"));//c.Add(new TextLeaf("#bb", "IsNull"));//c.Add(new TextLeaf("#cc", "IsNaN"));//alert(c.Test().length === c.length());//利用组合模式编写验证功能基本完成,但是还不够好/***************************************************************/

明天再阅读一遍