• 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;

      }

    }

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

  • 相关阅读:
    【日记】200617 今天开始写日记了
    近期未复现比赛汇总
    2021NSCTF RE WP
    2021国赛CISCN 初赛 部分REwriteup
    对流氓APP——一份礼物.apk的逆向分析
    RE之攻防世界 maze
    RE-攻防世界 logmein
    RE-攻防世界 T4 simple-unpack
    安天逆向工程课程 U1
    RE-攻防世界 simple-unpack
  • 原文地址:https://www.cnblogs.com/jinxiao/p/4766340.html
Copyright © 2020-2023  润新知