• javascript-简单工厂两种实现方式


    简单工厂笔记
     两种方式:
     第一种:通过实例化对象创建
     第二种:通过创建一个新对象然后包装增强其属性和功能来实现
     差异性:前一种通过类创建的 对象,如果这些类继承同一个父类,他们父类原型上的方法是可以共用的;后一种通过寄生方式创建的对象都是一个新的个体,所以他们的方法就不能共用了
     第一种和第二种都 以生产足球、篮球、网球为例子
     第一种方式

     1         var Basketball = function(){
     2              this.intro = '篮球盛行于美国';
     3          }
     4          Basketball.prototype={
     5              getMember:function(){
     6                  console.log("每个队伍需要5名队员")
     7              },
     8              getBallSize:function(){
     9                  console.log("篮球很大");
    10              }
    11          }
    12          var Football = function(){
    13              this.intro="足球在全世界范围类很流行";
    14          }
    15          Football.prototype={
    16              getMember:function(){
    17                  console.log("每个队伍需要11名队员")
    18              },
    19              getBallSize:function(){
    20                  console.log("足球很大");
    21              }
    22          }
    23          var Tennis = function(){
    24              this.intro="每年有很多网球系列赛";
    25          }
    26          Tennis.prototype={
    27              getMember:function(){
    28                  console.log("每个队伍需要1名队员")
    29              },
    30              getBallSize:function(){
    31                  console.log("网球很小");
    32              }
    33          }
    34          
    35          //第一种球工厂
    36          var ballFactory=function(name){
    37              switch(name){
    38                  case 'basketball':
    39                    return new Basketball();
    40                  case 'football':
    41                    return new Football();
    42                  case 'tennis':
    43                    return new Tennis();
    44              }
    45          }

    第一种简单工厂测试代码

    1          //第一种测试
    2          var football=ballFactory("football");
    3          console.log(football.intro);
    4          football.getMember();
    5          football.getBallSize();

    第二种简单工厂

     1          //第二种
     2          function createBall(type,intro,num,ballsize){
     3              var o = new Object();
     4              o.intro = intro;
     5              o.num = num;
     6              o.ballsize = ballsize;
     7              o.getMember = function(){
     8             //公共方法getNember
     9                  console.log("每个队伍需要"+this.num+"名队员");
    10              }
    11              o.getBallSize = function(){
    12             //公共方法getBallSize
    13                  console.log(this.ballsize);
    14              }
    15              if(type == 'basketball'){
    16                  //篮球差异部分
    17              }
    18              if(type=="football"){
    19                  //足球差异部分
    20              }
    21              if(type=="tennis"){
    22                  //网球差异部分
    23              }
    24              return o;
    25          }

    第二种简单工厂测试

             //第二种测试
             var football2=createBall("football","足球在全世界范围类很流行",11,"足球很大");
             console.log(football2.intro);
             football2.getMember();
             football2.getBallSize();
  • 相关阅读:
    【Spring Cloud】异常记录
    目录
    java8 语言特性
    Java 8 并发编程
    Spring Boot系列(四) Spring Cloud 之 Config Client
    找到字符串中最长的非重复子串
    Spring Boot系列(四) Spring Boot 之验证
    链表两数相加(add two numbers)
    找到数组中和为给定值的两个数
    Spring Boot系列(三) Spring Boot 之 JDBC
  • 原文地址:https://www.cnblogs.com/jtnote/p/5980771.html
Copyright © 2020-2023  润新知