Design Pattern là gì? Tại sao cần học Design Pattern?

Hiện nay, Design Pattern rất được ưa chuộng bởi nó sẽ giúp chúng ta giảm bớt thời gian và công sức trong quá trình thiết kế. Vậy Design Pattern là gì? Hãy cùng tìm hiểu nhé!

Hiện nay, Design Pattern rất được ưa chuộng bởi nó sẽ giúp chúng ta giảm bớt thời gian và công sức trong quá trình thiết kế. Vậy Design Pattern là gì? Hãy cùng tìm hiểu nhé!

Hiện nay, Design Pattern rất được ưa chuộng bởi nó sẽ giúp chúng ta giảm bớt thời gian và công sức trong quá trình thiết kế. Vậy Design Pattern là gì? Hãy cùng tìm hiểu nhé!

Design Pattern là gì?

Design Pattern là một giải pháp tổng thể cho các vấn đề chung trong công nghệ thiết kế phần mềm. Design Pattern có thể giúp thiết kế của chúng ta linh hoạt, dễ dàng thay đổi và bảo trì hơn.

Design pattern là gì?

Mỗi pattern mô tả một vấn đề xảy ra lặp đi lặp lại, và trình bày trọng tâm của giải pháp cho vấn đề đó, theo cách mà bạn có thể dùng đi dùng lại hàng triệu lần mà không cần phải suy nghĩ.

Về tổng quan chung, một pattern có 4 thành phần chính:

  • Tên: được dùng để mô tả vấn đề thiết kế, giải pháp, và kết quả trong từ 1 đến 2 chữ.

  • Vấn đề mà pattern này được áp dụng.

  • Giải pháp: mô tả những thành phần tạo nên thiết kế, mối quan hệ, trách nhiệm và cộng tác giữa các thành phần đó.

  • Hệ quả: lợi ích cũng như hạn chế khi sử dụng pattern. Mặc dù những điều này không được nhắc đến khi chúng ta ra quyết định thiết kế, nhưng rõ ràng việc đánh giá và hiểu được chi phí cũng như lợi ích khi áp dụng pattern là cần thiết.

Tại sao cần học Design Pattern?

 

  • Pattern được hiểu theo nghĩa là tái sử dụng ý tưởng.

  • Pattern hỗ trợ tái sử dụng kiến trúc và mô hình thiết kế phần mềm theo quy mô lớn.

  • Pattern đa tương thích.

Phân loại Design Pattern

Phân loại design patterns

1. Ceational Patterns (Nhóm khởi tạo)

Nhóm này sẽ giúp bạn rất nhiều trong việc khởi tạo đối tượng mà bạn khó có thể nhận ra.Nhóm khởi tạo gồm 5 mẫu design sau:

  • Abstract Factory: Cung cấp interface cho việc tạo lập các đối tượng mà không cần xác định lớp cụ thể

  • Builder: Tách rời việc xây dựng một đối tượng phức tạp khỏi cách thể hiện của nó.

  • Factory Method: Định nghĩa interface để sinh ra đối tượng.

  • Prototype: Quy định loại của các đối tượng cần tạo bằng cách dùng một đối tượng mẫu.

  • Singleton: Đảm bảo một class chỉ có một instance và cung cấp 1 điểm truy xuất toàn cục đến nó


2. Structural Patterns (Nhóm cấu trúc)

Nhóm cấu trúc sẽ giúp chúng ta thiết lập, định nghĩa quan hệ giữa các đối tượng. Nhóm này gồm có 11 mẫu design là:

  • Adapter/ Wrapper: chuyển giao diện của một class thành giao diện phù hợp yêu cầu

  • Bridge


  • Composite: Tổ chức các đối tượng theo cấu trúc phân cấp dạng cây

  • Decorator

  • Flyweight: chia sẻ trạng thái chung nhằm thao tác hiệu quả tài nguyên và bộ nhớ.

  • Proxy

3. Behavioral Patterns (Nhóm ứng xử)

Nhóm này sẽ tập trung thực hiện các hành vi của đối tượng, gồm các mẫu design:

  • Chain Of Responsibilities

  • Command

  • Iterator

  • Mediator

  • Memento

  • Observer

  • State

  • Strategy

  • Template Method

  • Visitor

  • Delegation

  • Service Locator

  • Repository

  • Entity-Attribute-Value (EAV)

Từ phân loại trên, dưới đây là một số cách tiếp cận để tìm ra design pattern phù hợp cho vấn đề:

  • Tìm hiểu cách design pattern giải quyết vấn đề.

  • Tìm hiểu tương quan giữa các pattern với nhau.

  • Hiểu mục đích của pattern.

  • Kiểm tra lý do phải thiết kế lại.

  • Ngược lại với cách tiếp cận trên, thay vì tìm hiểu lý do phải thiết kế lại, thử nghĩ xem bạn muốn thay đổi gì để không phải thiết kế lại.

Học Design Pattern như thế nào?

Bạn có thể tìm đọc thêm một số sách về Design Pattern như:

  • Design Patterns: Elements of Reusable Object-Oriented Software

  • Head First Design Patterns

  • Design Patterns For Dummies

  • Pattern Hatching: Design Patterns Applied

  • Refactoring to Patterns

  • Patterns of Enterprise Application Architecture

Lời kết

Trên đây là một vài nét cơ bản về Design Pattern mà các bạn có thể tham khảo. Hi vọng rằng qua bài viết trên, các bạn đã có một cái nhìn tổng quan và cụ thể hơn về Design Pattern.

Inspiration of the day

Everything is designed. Few things are designed well

Brian Reed, front-end developer and musician