• Privacy Policy
Chia sẻ kiến thức công nghệ
  • Home
  • Lập trình
  • Chia sẻ
  • Blog
No Result
View All Result
  • Home
  • Lập trình
  • Chia sẻ
  • Blog
No Result
View All Result
Duy PT Blog
No Result
View All Result
Home NodeJS

Các design pattern cần biết khi làm việc với NestJS

Duy Solo by Duy Solo
August 28, 2021
in NodeJS
Reading Time: 3 mins read
A A
Share on FacebookShare on Twitter

Mục lục

  1. Singleton
  2. Fluent Interface
  3. MVC – Model View Controller

NestJS tổng hợp hàng tá các design patterns (DP) khác nhau trong kiến trúc của mình. Có một số DP cũng khá là quen thuộc với mọi người đấy ^_^.

 

Singleton

Singleton là một trong những DP nổi tiếng nhất trong giới lập trình. Về cơ bản, bạn sẽ sử dụng DP này khi bạn cần giới hạn lại số lượng instances của một class nào đó.

Việc khởi tạo cũng khá đơn giản.

  • Tạo một class với private constructor().
  • Khai báo một phương thức static. Phương thức này sẽ tạo mới instance nếu chưa tồn tại, sau đó sẽ trả về một instance của class.

DP này thường được sử dụng trong một số DP khác như Abstract Factory Pattern hoặc Builder Pattern. Bạn cũng có thể sử dụng nó trong Facades Pattern – đảm bảo chỉ duy nhất 1 class được khởi tạo lúc runtime.

class MySingleton {
  private static instance: MySingleton

  private constructor() {}

  static instance() {
    if (!this.instance) {
      this.instance = new MySingleton()
    }

    return this.instance
  }
}

console.log(MySingleton.instance() === MySingleton.instance()) // true

new MySingleton() // throw exception

 

Fluent Interface

Rất thường được sử dụng trong một số ORM như TypeORM, Sequelize,…

Lợi ích chủ yếu của nó là giúp code của bạn dễ đọc, dễ hiểu, cũng như liền mạch hơn. 

Cách triển khai cũng khá đơn giản. Ví dụ bạn có một class kèm theo một số methods khác nhau. Lúc này, các methods builder bạn sẽ return this sau khi thực hiện logic – điều này giúp bạn có thể tiếp tục chuỗi phương thức mà không cần sang dòng code mới. Chuỗi phương thức sẽ kết thúc khi chạm tới một method không return this.

class Pet {
  private _type: string | null

  private _name: string | null

  private _age: number | null

  private _legs: number | null

  type(value: string) {
    this._type = value

    return this
  }

  name(value: string) {
    this._name = value

    return this
  }

  age(value: number) {
    this._age = value

    return this
  }

  legs(value: number) {
    this._legs = value

    return this
  }

  getInfo(): string {
    return `Your ${this._type} ${this._name} - ${this._age} year(s) old - has ${this._legs} legs`
  }
}

const newPet = new Pet().type('dog').name('Mina').age(3).legs(4)

console.log(newPet.getInfo()) // Your dog Mina - 3 year(s) old - has 4 legs

Nếu bạn không dùng Fluent Interface thì bạn sẽ phải gọi tuần tự trên từng dòng

const newPet = new Pet()
newPet.type('dog')
newPet.name('Mina')
newPet.age(3)
newPet.legs(4)

Đọc thôi là thấy mệt rồi đó ^.~

 

MVC – Model View Controller

DP này quá nổi tiếng rồi. Về cơ bản là nó chia ứng dụng thành 3 phần:

  • Model chịu trách nhiệm xử lý business logic, thao tác dữ liệu…
  • View chịu trách nhiệm xử lý và hiển thị nội dung cho client.
  • Controller chịu trách nhiệm tiếp nhận request và điều hướng xuống Model xử lý logic, sau đó đem kết quả từ Model truyền sang View.

Bạn có thể tham khảo chi tiết về mô hình này qua bài viết này của mình https://duypt.dev/laravel-va-mau-thiet-ke-hmvc.

 

Tags: design patternsfluent interfacejavascriptmodel view controllermvcnestjssingletontypescript

Related Posts

Lập trình

Xóa một property của Object trong Javascript

by Duy Solo
April 24, 2022
0

Mình sẽ giới thiệu 2 cách để xóa một property trong Javascript Object. Một cách sử dụng mutable, một cách...

Read more
Higher order Functions là gì? Tại sao nên sử dụng chúng?
Lập trình

Higher order Functions là gì? Tại sao nên sử dụng chúng?

by Duy Solo
April 15, 2022
0

Đây là một khái niệm rất quan trọng trong Functional Programming. Ở đây mình sẽ cho ví dụ dựa trên...

Read more
NodeJS

NestJS – Providers

by Duy Solo
August 29, 2021
0

Providers là thành phần cơ bản và cực kỳ quan trọng trong Nest để thực hiện Dependency Injection.

Read more
NodeJS

Các design pattern cần biết khi làm việc với NestJS – phần 2

by Duy Solo
August 28, 2021
0

Một số design patterns chính đang được sử dụng bởi NestJS mà bạn cần nắm rõ để làm việc với...

Read more
Load More
Next Post

Các design pattern cần biết khi làm việc với NestJS - phần 2

NestJS - Providers

Discussion about this post

POPULAR POST

  • LocalStorage và Cookies – chọn cái nào để lưu JWT Tokens hiệu quả và an toàn?

    1065 shares
    Share 426 Tweet 266
  • Hướng dẫn reset trial cho các sản phẩm IntelliJ trên MacOS

    933 shares
    Share 373 Tweet 233
  • Repository Design Pattern và ứng dụng của nó trong Laravel

    919 shares
    Share 368 Tweet 230
  • Decorators trong Typescript

    848 shares
    Share 339 Tweet 212
  • Các thư viện Date Pickers tốt nhất cho React

    743 shares
    Share 297 Tweet 186
Duy PT Blog

© 2021 Duy PT Blog

Liên kết

  • Lập trình
  • Chia sẻ
  • Blog
  • Privacy Policy

Theo dõi

No Result
View All Result
  • Home

© 2021 Duy PT Blog