zoukankan      html  css  js  c++  java
  • JS设计模式--简单工厂模式

    在JS中创建对象会习惯的使用new关键字和类构造函数(也是可以用对象字面量)。

    工厂模式就是一种有助于消除两个类依赖性的模式。

    工厂模式分为简单工厂模式和复杂工厂模式,这篇主要讲简单工厂模式。

    简单工厂模式:使用一个类来生成实例。

    复杂工厂模式:使用子类来决定一个成员变量应该是哪个具体的类的实例。

    简单工厂模式:

    常用对象方法创建和调用

    var BallShop = function(){};

    BallShop.prototype = {

      sellBall : function(model){

        var ball;

        switch(model){

          case "Tennis":

            ball = new TennisBall();

            break;

          case "bask":

            ball = new BaskBall();

            break;

          case "volly":

            ball  = new VollyBall();

            break;

          default:

            ball = new FootBall();

            break;

        }

        return ball;

      }

    }

    var JX = new BallShop();

    JX.sellBall("tennis");

    以上方式能够满足大多数情形下使用,但扩展性就不友好了,如果需要添加一些新的球类,必须修改球类的switch部分。

    把这部分单独出来交给一个简单额工厂对象:

    var BallFactory = {

      createBicycle:function(model){

        var ball;

        switch(model){

          case "Tennis":

            ball = new TennisBall();

            break;

          case "bask":

            ball = new BaskBall();

            break;

          case "volly":

            ball  = new VollyBall();

            break;

          default:

            ball = new FootBall();

            break;

        }

        return ball;

      }

    }

    BallFactory是一个脱离于BallShop的单体。能够降低耦合度。当需要新添加类型的时候,只要修改BallFactory工厂单体对象就行。

    var BallShop = function(){};

    BallShop.prototype = {

      sellBall:function(model){

        var ball = BallFactory.createBall(model);

        return ball;

      }

    }

    以上就是一个简单的简单工厂模式。改模式就是将成员对象的创建工作交给一个外部对象实现,该外部对象可以是一个简单的命名空间,也可以是一个类的实例。

  • 相关阅读:
    寒假作业1
    秋季学习总结
    记叙在人生路上对你影响最大的三位老师
    2019年春季学期第二周作业
    币值转换
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/jinxiao/p/4766340.html
Copyright © 2011-2022 走看看