美文网首页
抽象工厂模式

抽象工厂模式

作者: niumew | 来源:发表于2016-04-12 20:03 被阅读0次
    // 抽象工厂方法
    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
    

    相关文章

      网友评论

          本文标题:抽象工厂模式

          本文链接:https://www.haomeiwen.com/subject/jdhwlttx.html