Sách Design Patterns: Elements of Reusable Object-Oriented Software

Nếu bạn thích sưu tập những cuốn sách kinh điển về lập trình hướng đối tượng (OOP), Design Patterns: Elements of Reusable Object-Oriented Software là lựa chọn không thể bỏ qua. Dù bạn đang làm việc với bất kỳ ngôn ngữ OOP nào, cuốn sách này đều mang đến những kiến thức thật sự bổ ích.

1. Đôi nét về tác giả

Năm 1994, cuốn sách khoa học máy tính mang tính biểu tượng này đã được xuất bản lần đầu tiên. Bốn tác giả của cuốn sách: Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides, đã được mệnh danh là “Bộ tứ quyền lực” (Gang of Four hay viết tắt là GoF). Mặc dù đã được xuất bản từ hàng chục năm trước, nó vẫn là một cuốn sách về lập trình hướng đối tượng bán chạy nhất hiện nay.

GoF đã viết cuốn sách trong bối cảnh ngôn ngữ C++ nhưng nó vẫn rất phù hợp với Java. Và cả 2 ngôn ngữ này đều được sử dụng để lập trình hướng đối tượng. Các tác giả thông qua kinh nghiệm của họ đã tìm thấy mẫu thiết kế chung của các công ty lớn sử dụng C++. Đặc biệt, các mẫu thiết kế này không chỉ được sử dụng duy nhất với C++, nó có thể áp dụng với bất kỳ ngôn ngữ hướng đối tượng nào khác như C#, PHP, Python, Java.

Sách Design Patterns: Elements of Reusable Object-Oriented Software
Sách Design Patterns: Elements of Reusable Object-Oriented Software

GoF viết cuốn sách này hướng đến các nhà phát triển đã có một số kinh nghiệm lập trình hướng đối tượng, nhưng đang tìm kiếm giải pháp để giải quyết các vấn đề một cách nhanh chóng. Các mẫu thiết kế của GoF có thể tái sử dụng và có tính linh hoạt cao, được chia thành 3 loại:

  • Mẫu khởi tạo – Creational Pattern: Tạo các đối tượng.
  • Mẫu cấu trúc – Structural Pattern: Cung cấp mối quan hệ giữa các đối tượng.
  • Mẫu hành vi – Behavioral Pattern: Giúp xác định cách các đối tượng tương tác.

2. Nội dung sách Design Patterns: Elements of Reusable Object-Oriented Software

Hai chương đầu là phần giới thiệu và giải thích lý do tồn tại của các mẫu thiết kế, cách chúng nên được sử dụng, các biểu tượng tốt và xấu… Các mẫu thiết kế hướng đối tượng được chia thành 3 loại như đã chia sẻ ở mục trên.

Mỗi mẫu được mô tả bằng một lời giải thích đầy đủ, một sơ đồ UML, sự tương tác giữa các phần tử mẫu, cũng như một số giải pháp triển khai. Các tác giả không thể trình bày tất cả các giải pháp xử lý vấn đề vì nó còn phụ thuộc vào ngôn ngữ bạn đang sử dụng.

Sách chia các mẫu thiết kế OOP thành 3 loại
Sách chia các mẫu thiết kế OOP thành 3 loại

Chi tiết về 23 mẫu thiết kế hướng đối tượng được chia sẻ trong sách:

2.1. Mẫu thiết kế khởi tạo

  • Factory Method: Tạo các đối tượng không chỉ định lớp chính xác để tạo.
  • Abstract Factory: Cho phép tạo các đối tượng không cần chỉ định loại cụ thể của chúng.
  • Builder: Sử dụng để tạo các đối tượng phức tạp.
  • Prototype: Tạo một đối tượng mới từ một đối tượng hiện có.
  • Singleton: Đảm bảo chỉ một thể hiện của một đối tượng được tạo.

2.2. Mẫu thiết kế kiến trúc

  • Adapter: Cho phép hai lớp không tương thích hoạt động cùng nhau. Bằng cách bao bọc một giao diện xung quanh một trong các lớp hiện có.
  • Bridge: Tách một phần trừu tượng để hai lớp có thể khác nhau một cách độc lập.
  • Composite: Đưa một nhóm đối tượng thành một đối tượng duy nhất.
  • Facade: Cung cấp một giao diện đơn giản cho một đối tượng cơ bản phức tạp hơn.
  • Flyweight: Giảm chi phí của các mô hình đối tượng phức tạp.
  • Proxy: Cung cấp giao diện trình giữ chỗ cho đối tượng cơ bản. Để kiểm soát quyền truy cập, giảm chi phí hoặc giảm độ phức tạp.

2.3. Mẫu thiết kế hành vi

  • Chain of Responsibility: Ủy quyền các lệnh cho một chuỗi các đối tượng xử lý.
  • Command: Tạo các đối tượng đóng gói các hành động và tham số.
  • Interpreter: Triển khai một ngôn ngữ chuyên biệt.
  • Iterator: Truy cập tuần tự các phần tử của một đối tượng. Nhưng không để lộ phần biểu diễn cơ bản của nó.
  • Mediator: Cho phép giao tiếp giữa các lớp khác nhau.
  • Memento: Cung cấp khả năng khôi phục một đối tượng về trạng thái trước đó của nó.
  • Observer: Là một mẫu xuất bản/ đăng ký. Cho phép một số đối tượng quan sát thấy một sự kiện.
  • State: Cho phép một đối tượng thay đổi hành vi của nó khi trạng thái bên trong của nó thay đổi.
  • Strategy: Cho phép một trong số các thuật toán được chọn nhanh chóng tại thời điểm thực thi.
  • Template Method: Định nghĩa khung của thuật toán là một lớp trừu tượng. Cho phép các lớp con của nó cung cấp hành vi cụ thể.
  • Visitor: Tách một thuật toán khỏi một cấu trúc đối tượng. Bằng cách di chuyển hệ thống phân cấp của các phương thức vào một đối tượng.

Dù bạn đã thành thạo hay chưa có nhiều kinh nghiệm với các ngôn ngữ lập trình hướng đối tượng, hãy tìm đọc cuốn sách Design Patterns: Elements of Reusable Object-Oriented Software ngay từ bây giờ. Để lại bình luận bên dưới bài viết nếu bạn cần hỗ trợ nhiều hơn nhé.

Nếu bạn quan tâm, hãy xem các vị trí đang tuyển dụng của Got It tại: bit.ly/gotit-hanoi và đọc thêm về quy trình tuyển dụng tại đây.

branding
branding
February 07, 2021
0
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
Bài tập lập trình hướng đối tượng cơ bản, nâng cao

Bài tập lập trình hướng đối tượng cơ bản, nâng cao

Đọc về Object-Oriented Programming (OOP) thôi là chưa đủ, quan trọng là bạn phải thực hành. Làm các bài tập lập trình hướng đối tượng sẽ giúp bạn nắm chắc hơn về OOP. Dưới đây là một số bài tập OOP Got It đã tổng hợp được. Hãy cùng làm để thành thạo lập trình […]
Inversion of control là gì? Tìm hiểu Dependency Inversion

Inversion of control là gì? Tìm hiểu Dependency Inversion

Các khái niệm như Dependency Injection, Dependency Inversion hay Inversion of Control là gì đều là những câu hỏi khó kể cả với những kỹ sư kỳ cựu. Nhiều bạn dù đã đi làm vài năm nhưng vẫn chưa thực sự hiểu rõ về các khái niệm này mà chỉ biết sử dụng chúng trong […]
Các design pattern thông dụng trong JavaScript

Các design pattern thông dụng trong JavaScript

Các design pattern thông dụng không còn là công cụ xa lạ với giới lập trình viên. Nhờ có chúng, developer tạo được các mã code có thể bảo trì, khả dụng và dễ tái sử dụng, đặc biệt đối với các ứng dụng lớn. Bài viết dưới đây sẽ giúp bạn hiểu thêm về […]
Sách Design Patterns: Elements of Reusable Object-Oriented Software

Sách Design Patterns: Elements of Reusable Object-Oriented Software

Nếu bạn thích sưu tập những cuốn sách kinh điển về lập trình hướng đối tượng (OOP), Design Patterns: Elements of Reusable Object-Oriented Software là lựa chọn không thể bỏ qua. Dù bạn đang làm việc với bất kỳ ngôn ngữ OOP nào, cuốn sách này đều mang đến những kiến thức thật sự bổ […]
Những mẫu đề thi lập trình hướng đối tượng C++ có thể tham khảo

Những mẫu đề thi lập trình hướng đối tượng C++ có thể tham khảo

Trong số các môn học, đề thi lập trình hướng đối tượng C++ được đánh giá là không quá khó vì đây là một môn nền tảng. Bài viết sẽ chia sẻ với các bạn một số mẫu đề có thể tham khảo. Mục lụcMẫu đề thi lập trình hướng đối tượng C++ số 1Mẫu […]
So sánh lập trình hướng đối tượng và lập trình hướng cấu trúc

So sánh lập trình hướng đối tượng và lập trình hướng cấu trúc

Mặc dù đều là kỹ thuật lập trình sử dụng ngôn ngữ bậc cao, nhưng nếu so sánh lập trình hướng đối tượng và lập trình hướng cấu trúc thì ta có thể dễ dàng phát hiện những điểm không tương đồng giữa 2 phương pháp này. Vậy chúng khác nhau như thế nào? Cùng […]