JS 창설 형 설계 모델 - 공장 모델

2809 단어
1. 간단 한 공장 모델 (정적 공장 방법, 공장 대상 이 특정한 제품 대상 류 의 인 스 턴 스 를 만 들 기로 결정 함)
//     type         
var BasketBall = function(){
    this.into = "wtf";
}
BasketBall.prototype = {
    getMember : function(){
        console.log('123')
    },
    getBallSize : function(){
        console.log('big');
    },
        getBasket : function(){}
}
var FootBall = function(){
    this.into = "love";
}
FootBall.prototype = {
    getMember : function(){
        console.log('asf')
    },
    getBallSize : function(){
        console.log('small');
    },
        getFootBall : function(){}
}
var SportsFactory = function(name){
    switch(name){
        case 'NBA':
                    return new BasketBall();
            case 'wordCup':
            return new FootBall();
    }
}
//                ,                    
function createSprots(name,context){
      var o = new Object();
      o.into = context;
      o.getMember = function(){};
      o.getBallSize = function(){};
      if(name == 'basket'){
            o.getBasket = function(){}
      }
      if(name == 'football'){
            o.getFootBall = function(){}
      }
      return o;
}

/**
  * :                  ,             ,            
  *                      ,      ;
  */

2. 공장 방법 모델 (제품 류 에 대한 추상 적 인 추상 을 통 해 그 창설 업 무 는 주로 여러 종류의 제품 을 창설 하 는 실례 를 책임 진다)
//       
var Factory = function(type,content){
  if(this instanceof Factory){
    var s = new this[type](content)
    return s;
  }else{
    return new Factory(type,content);
  }
}
//                    
Factory.prototype = {
  Java : function(){

  },
  Javascript : function(){
    
  },
  ...
};
//                  

3. 추상 적 인 공장 모델 (제품 클래스 의 생 성 에 사용)
  var Person = function(){};
  Person.prototype = {
    getName : function(){
       return new Error('        ');//                           
    }
  }
  //       (new Person()).getName() //            
  //    ,              ,               ,                 

//      
var VehicleFactory = function(subType,superType){
  //              
  if(typeof VehicleFactory [superType] === 'function'){
    //   
    function F(){};
    F.prototype = new VehicleFactory [superType](); //     
    subType.constructor = subType; //     constructor
    subType.prototype = new F(); // new F()        F        F   ;
  }else{
    return new Error('       .')
  }
}
//Person    
VehicleFactory .Person = function(){
  this.type = 'person'
}
VehicleFactory .Person.prototype = {
  getName: function(){}
}
//Animal    
VehicleFactory .Animal = function(){
  this.type = 'animal '
}
VehicleFactory .Animal .prototype = {
  getName: function(){}
}

좋은 웹페이지 즐겨찾기