js工廠模式--簡單工廠,工廠方法模式(復講)


一、簡單工廠模式
簡單工廠模式屬於類的創建型模式,又叫靜態工廠方法模式。通過專門定義一個工廠類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。
舉例說明:
現在有個工廠,可以生產自行車和摩托車,通過外界的訂單來生產產品。
class FACTORY {
  Product(type) {
    var production;
    switch(type) {
      case 'bike' : 
      production = new Bike();
      break;
      case 'moto' :
      production = new Moto();
      break;
    }
    return production
  }
}
class Bike {
  product() {
    console.log('生產自行車');
  }
}
class Moto {
  product() {
    console.log('生產摩托車車');
  }
}
let order = new ORDER();
console.log('order',order.Product('bike).product());
在上邊代碼中,工廠類作為最核心存在,他包含了處理業務的邏輯,能夠根據外界的條件去創建具體的類,也就是說能夠根據訂單內容去生產相關產品,無需關注自行車,摩托車是怎么生產的。但是簡單雖然簡單,當業務
類型多的時候,會不斷的向工廠類添加功能,把所有功能都集中到一個類上,足夠多的時候這給類難以維護並且臃腫,這違反了開閉原則。
二、工廠方法模式

工廠方法模式是對簡單工廠模式的稍微的改進,它定義一個用於創建對象的接口,讓子類決定實例化哪一個類。針對上述問題,假如每次添加一種新的產品,都要去更改工廠內部,工廠方法模式就是將這個大廠拆分出各個小廠,每次添加新的產品讓小廠去生產,大廠負責指揮就好了。

class FACTORY {

  construct(){  

  }

}

class SONFACTORY extends FACTORY {

  Product(type) {
    var production;
    switch(type) {
      case 'bike' : 
      production = new Bike();
      break;
      case 'moto' :
      production = new Moto();
      break;
    }
    return production
  }

}

class Bike
  product() {
    console.log('生產自行車');
  }
}
class Moto{
  product() {
    console.log('生產摩托車車');
  }
}

與簡單工廠模式相比,制造產品的工廠類不再 只有一個,而是每種具體產品類都對應一個生產它的具體工廠類。而這些具體工廠類的共同特征再被提取出來形成一個抽象產品類,這些具體產品類都繼承自這個抽象產品類。每當有新的需求,增加一種繼承在抽象工廠的具體工廠類,它符合開閉原則。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM