zoukankan      html  css  js  c++  java
  • 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 在必须的时候才使用工厂模式,不要滥用

  • 相关阅读:
    js合并table指定列
    jquery固定表头和列头
    Response输出excel设置文本样式
    Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句
    清除webBrowser 缓存和Cookie的解决方案
    WebBrowser加载一个URL被多次调用DocumentCompleted 的问题解决方案<转>
    Windows 2003 防火墙开启后无法访问FTP解决办法
    基于支付宝微信通知的一种个人收款回调方案(转)
    P2P技术详解(三):P2P技术之STUN、TURN、ICE详解
    turn协议的工作原理
  • 原文地址:https://www.cnblogs.com/oceanxing/p/2890709.html
Copyright © 2011-2022 走看看