0

[Design pattern] Singleton Pattern; Factory Method Pattern [p2]

Introduction

Singleton pattern? Factory Method Pattern?

Content

I. Singleton pattern

Singleton Pattern là một trong những Design Pattern cơ bản nhất. Trong phần này, chúng ta sẽ tìm hiểu cách áp dụng Singleton Pattern để đảm bảo rằng một lớp chỉ có duy nhất một thể hiện (instance). Chúng ta sẽ khám phá cách triển khai Singleton Pattern trong các ngôn ngữ lập trình phổ biến như Java, C++, và C#. Chúng ta cũng sẽ xem xét các ví dụ thực tế về việc sử dụng Singleton Pattern, như truy cập vào cơ sở dữ liệu, cấu hình ứng dụng và các tài nguyên chia sẻ.

const Singleton = (function () {
  let instance;

  function createInstance() {
    // Private variables and methods
    return {
      publicMethod: function () {
        console.log("Singleton public method");
      },
      publicProperty: "Singleton public property",
    };
  }

  return {
    getInstance: function () {
      if (!instance) {
        instance = createInstance();
      }
      return instance;
    },
  };
})();

// Usage
const singletonInstance1 = Singleton.getInstance();
const singletonInstance2 = Singleton.getInstance();

console.log(singletonInstance1 === singletonInstance2); // true
singletonInstance1.publicMethod(); // Singleton public method
console.log(singletonInstance1.publicProperty); // Singleton public property

II. Factory method pattern

Factory Method Pattern là một Design Pattern thuộc nhóm Creational Pattern. Trong phần này, chúng ta sẽ tìm hiểu cách áp dụng Factory Method Pattern để tạo ra đối tượng mà không cần chỉ định rõ lớp cụ thể của đối tượng đó. Chúng ta sẽ khám phá cách triển khai Factory Method Pattern trong ngôn ngữ lập trình Java và C#. Chúng ta cũng sẽ xem xét các ví dụ về việc sử dụng Factory Method Pattern trong các tình huống khác nhau, như tạo đối tượng trong một hệ thống đa dạng các loại đối tượng và tạo đối tượng theo yêu cầu của người dùng.

class Product {
  operation() {
    console.log("Product operation");
  }
}

class ConcreteProduct extends Product {
  operation() {
    console.log("ConcreteProduct operation");
  }
}

class Creator {
  factoryMethod() {
    throw new Error("Subclasses must override this method");
  }

  operation() {
    const product = this.factoryMethod();
    product.operation();
  }
}

class ConcreteCreator extends Creator {
  factoryMethod() {
    return new ConcreteProduct();
  }
}

// Usage
const creator = new ConcreteCreator();
creator.operation(); // ConcreteProduct operation

Conclusion

Bài viết này đã giới thiệu về Design Pattern và giới thiệu hai Design Pattern cơ bản là Singleton Pattern và Factory Method Pattern. Chúng ta đã tìm hiểu về ý nghĩa và cách áp dụng của mỗi Design Pattern, cũng như xem xét các ví dụ thực tế để hiểu rõ hơn về cách chúng được sử dụng. Tiếp tục theo dõi series để khám phá thêm các Design Pattern khác nhau từ dễ đến khó.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí