• 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 在必须的时候才使用工厂模式,不要滥用

  • 相关阅读:
    添加多个tab,并循环修改tab样式
    00五大原则(转)
    win7 & IIS7.5 HTTP 错误 404.17 Not Found 请求的内容似乎是脚本,因而将无法由静态
    人类的奇怪之处
    创业公司CEO每天应该做的13件事(转),个人感觉,同样有几条也适合于自己,或部门领导。
    购物车功能分析
    ASP.NET中DataTable的用法
    jQuery插件列表
    jQuery灯箱插件lightBox使用方法
    一个黑客与电脑白痴的聊天纪录
  • 原文地址:https://www.cnblogs.com/oceanxing/p/2890709.html
Copyright © 2020-2023  润新知