• javascript 工厂模式


    1 简单工厂模式

    var CarFactory = function(){};

    CarFactory.prototype= {

        createCar: function(type){

            var car= null;

            switch(type){

                case 'ford': car= new Ford();break;

                case 'jetta': car= new Jetta();break;

                default: car= new Lancer();

           }

        }

    }

    var CarShop = new function(){}

    CarShop.prototype = {

        sellCar: function(type){

           var car = new CarFactory().createCar(type);

           car.made();

           car.wash();

           return car;

        }

    }

    2 抽象工厂模式

    汽车制造厂不可能制造所有的汽车,汽车店也不可能卖所有的汽车。但是卖车的流程(本人不清楚卖车流程,sellCar方法只是假设)是一样的。怎么办,上面的简单工厂模式显然不适合。

    由于制造汽车各不相同,createCar变成一个抽象方法。

    var CarShop = function(){}

    CarShop.prototype= {

        createCar: function(type){

             throw new Error("Unsupported operation on an abstract class.");       

        },

        sellCar: function(type){

            var car = this.createCar(type);

            car.made();

            car.wash();

            return car;

        }

    }

    //丰田汽车店,只卖丰田汽车

    var ToyotaShop = function (){};

    //继承CarShop

    ToyotaShop.prototype = new CarShop();

    ToyotaShop.prototype.createCar = function(type){

        var car = null;

        switch(type){

            case 'vios': car = new Vios();break;

            case 'yaris': car = new Yaris();break;

            case 'corolla': car = new Corolla();break;

            default: car = new Crown();

        }

        return car;

    }

    //比亚迪汽车点

    ...

    不同的汽车店继承CarShop,然后实现自己的createCar方法。

    3 工厂模式的使用场景

        3.1 有相同接口,但是不同实现的类

        3.2 把很多小类,聚合到一个大类,减少代码重复。高内聚低耦合。

        3.3 在运行时,可以动态选择用什么类

        3.4 在必须的时候才使用工厂模式,不要滥用

  • 相关阅读:
    大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 时序算法)
    大数据时代:基于微软案例数据库数据挖掘知识点总结(结果预测篇)
    svg图片的缩放拖拽
    计算机网络之以太网,通俗点的说法
    yield 与生成器
    安卓开发第一记 android stdio 安装后 新建测试项目报错
    Javascript的异常捕获机制
    小而实用的工具插件集锦(JQGrid,zTree)
    proxifier 注册码 +电脑全局代理设置
    雷林鹏分享:jsp 发送邮件
  • 原文地址:https://www.cnblogs.com/oceanxing/p/2890709.html
Copyright © 2020-2023  润新知