設計模式是常見程式設計問題的預先定義解決方案。它們幫助開發人員編寫更有組織、可維護和可擴展的程式碼。在 JavaScript 中,這些模式可以大致分為 Creational、Structural 和 Behavioral 模式。
創建模式專注於物件創建。它們確保實例化物件時的靈活性和重複使用性。
確保某個類別僅存在一個實例,並為其提供一個全域存取點。
class Singleton { constructor() { if (Singleton.instance) return Singleton.instance; Singleton.instance = this; } } const instance1 = new Singleton(); const instance2 = new Singleton(); console.log(instance1 === instance2); // true
提供了一種建立物件的方法,而無需指定其確切的類別。
class CarFactory { static createCar(type) { switch (type) { case 'sedan': return { type: 'Sedan', wheels: 4 }; case 'suv': return { type: 'SUV', wheels: 4 }; default: return { type: 'Unknown', wheels: 0 }; } } } const car = CarFactory.createCar('suv'); console.log(car); // { type: 'SUV', wheels: 4 }
結構模式處理物件的組合與關係,確保系統易於管理。
將程式碼封裝在一個獨立的單元中,僅公開必要的方法。
const calculator = (() => { const add = (a, b) => a + b; const subtract = (a, b) => a - b; return { add, subtract }; })(); console.log(calculator.add(2, 3)); // 5 console.log(calculator.subtract(5, 2)); // 3
動態地為物件添加額外的行為。
function coffee() { return "Coffee"; } function withMilk(coffeeFn) { return `${coffeeFn()} + Milk`; } console.log(withMilk(coffee)); // Coffee + Milk
行為模式關注物件如何溝通和互動。
允許一個物件(主體)通知多個觀察者其狀態的變化。
class Subject { constructor() { this.observers = []; } subscribe(observer) { this.observers.push(observer); } notify(data) { this.observers.forEach(observer => observer(data)); } } const subject = new Subject(); subject.subscribe(data => console.log(`Observer 1: ${data}`)); subject.notify("Event occurred!"); // Observer 1: Event occurred!
允許交替使用多種演算法。
class Singleton { constructor() { if (Singleton.instance) return Singleton.instance; Singleton.instance = this; } } const instance1 = new Singleton(); const instance2 = new Singleton(); console.log(instance1 === instance2); // true
設計模式是建立健壯且可擴展的 JavaScript 應用程式的重要工具。無論是創建物件、管理關係或協調行為,這些模式都為解決軟體開發中的複雜挑戰提供了清晰度和方向。 |
嗨,我是 Abhay Singh Kathayat!
我是一名全端開發人員,擁有前端和後端技術的專業知識。我使用各種程式語言和框架來建立高效、可擴展且用戶友好的應用程式。
請隨時透過我的商務電子郵件與我聯繫:kaashshorts28@gmail.com。
以上是JavaScript 設計模式:全面概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!