中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

es6工廠模式怎么實現

發布時間:2022-05-10 15:27:23 來源:億速云 閱讀:168 作者:iii 欄目:web開發

本篇內容介紹了“es6工廠模式怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

es6有工廠模式;工廠模式將邏輯封裝到一個函數中,在es6中可以不使用構造函數創建對象,而使用class配合static關鍵字將簡單工廠封裝到User類的靜態方法中,語法為“class User{構造器}static 靜態方法(){}”。

本教程操作環境:windows10系統、ECMAScript 6.0版、Dell G3電腦。

es6有工廠模式嗎

ES6中給我們提供了class新語法,雖然class本質上是一顆語法糖,并也沒有改變JavaScript是使用原型繼承的語言,但是確實讓對象的創建和繼承的過程變得更加的清晰和易讀。下面我們使用ES6的新語法來重寫上面的例子。

ES6重寫簡單工廠模式

使用ES6重寫簡單工廠模式時,我們不再使用構造函數創建對象,而是使用class的新語法,并使用static關鍵字將簡單工廠封裝到User類的靜態方法中:

//User類
class User {
  //構造器
  constructor(opt) {
    this.name = opt.name;
    this.viewPage = opt.viewPage;
  }
  //靜態方法
  static getInstance(role) {
    switch (role) {
      case 'superAdmin':
      return new User({ name: '超級管理員', viewPage: ['首頁', '通訊錄', '發現頁', '應用數據', '權限管理'] });
        break;
      case 'admin':
        return new User({ name: '管理員', viewPage: ['首頁', '通訊錄', '發現頁', '應用數據'] });
        break;
      case 'user':
        return new User({ name: '普通用戶', viewPage: ['首頁', '通訊錄', '發現頁'] });
        break;
      default:
        throw new Error('參數錯誤, 可選參數:superAdmin、admin、user')
    }
  }
}

//調用
let superAdmin = User.getInstance('superAdmin');
let admin = User.getInstance('admin');
let normalUser = User.getInstance('user');

工廠模式是最常見的一種開發模式,將new操作單獨封裝,當遇到new是應考慮工廠模式。創建對象,不暴露代碼邏輯,把邏輯寫到函數里面。這個函數就是工廠模式。優點,簡單。   缺點就是,每增加構造函數,都要修改函數里面的代碼邏輯。

工廠模式是用來創建對象的一種最常用的設計模式。我們不暴露創建對象的具體邏輯,而是將將邏輯封裝在一個函數中,那么這個函數就可以被視為一個工廠。工廠模式根據抽象程度的不同可以分為:簡單工廠,工廠方法和抽象工廠。

如果只接觸過JavaScript這門語言的的人可能會對抽象這個詞的概念有點模糊,因為JavaScript一直將abstract作為保留字而沒有去實現它。如果不能很好的理解抽象的概念,那么就很難理解工廠模式中的三種方法的異同。所以,我們先以一個場景去簡單的講述一下抽象和工廠的概念。

簡單工廠模式又叫靜態工廠模式,由一個工廠對象決定創建某一種產品對象類的實例。主要用來創建同一類對象。

在實際的項目中,我們常常需要根據用戶的權限來渲染不同的頁面,高級權限的用戶所擁有的頁面有些是無法被低級權限的用戶所查看。所以我們可以在不同權限等級用戶的構造函數中,保存該用戶能夠看到的頁面。在根據權限實例化用戶。

代碼如下:

class SuperAdmin{
  constructor(){
    this.name = "超級管理員";
    this.viewPage = ['首頁', '通訊錄', '發現頁', '應用數據', '權限管理'];
  }
}
class Admin{
  constructor(){
    this.name = "管理員";
    this.viewPage = ['首頁', '通訊錄', '發現頁', '應用數據', '權限管理'];
  }
}
class NormalUser{
  constructor(){
    this.name = "普通用戶";
    this.viewPage = ['首頁', '通訊錄', '發現頁', '應用數據', '權限管理'];
  }
}
//工廠方法類
class UserFactory {
  getFactory(role){
   switch (role) {
     case 'superAdmin':
       return new SuperAdmin();
       break;
     case 'admin':
       return new Admin();
       break;
     case 'user':
       return new NormalUser();
       break;
     default:
       throw new Error('參數錯誤, 可選參數:superAdmin、admin、user');
   }
  }
 }
 
//調用
let uesr =new UserFactory();
uesr.getFactory('superAdmin');
uesr.getFactory('admin');
uesr.getFactory('user');

簡單工廠的優點在于,你只需要一個正確的參數,就可以獲取到你所需要的對象,而無需知道其創建的具體細節。但是在函數內包含了所有對象的創建邏輯(構造函數)和判斷邏輯的代碼,每增加新的構造函數還需要修改判斷邏輯代碼。

當我們的對象不是上面的3個而是30個或更多時,這個函數會成為一個龐大的超級函數,便得難以維護。

所以,簡單工廠只能作用于 創建的對象數量較少,對象的創建邏輯不復雜時使用。

“es6工廠模式怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

es6
AI

崇州市| 伽师县| 五大连池市| 昭通市| 玛纳斯县| 班玛县| 息烽县| 屯昌县| 石嘴山市| 临桂县| 任丘市| 清原| 招远市| 开原市| 奎屯市| 顺昌县| 海晏县| 白城市| 安化县| 车险| 建德市| 长治市| 昌邑市| 红原县| 东乌珠穆沁旗| 越西县| 华宁县| 荔浦县| 南丹县| 剑阁县| 黄梅县| 宁海县| 出国| 四川省| 临清市| 利辛县| 东辽县| 若羌县| 郴州市| 乌恰县| 松阳县|