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

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.

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.

https://d1iv5z3ivlqga1.cloudfront.net/wp-content/uploads/2021/04/29235048/1_QAG9RXQyyMAY7i9OYo84FA.png
Got It Vietnam
February 07, 2021
Share this post to:
Tags:
0 Comments
Inline Feedbacks
View all comments
Các bài viết liên quan
4 khóa học lập trình hướng đối tượng miễn phí cho người mới

4 khóa học lập trình hướng đối tượng miễn phí cho người mới

Nếu bạn muốn theo nghề IT thì sớm muộn cũng phải học lập trình hướng đối tượng. Đây là một kiến thức cơ bản, bắt buộc phải biết. Bài viết sẽ chia sẻ với bạn 4 khóa học miễn phí, phù hợp với người mới bắt đầu. Tìm hiểu thêm: Bài tập ôn luyện Lập […]
Phương pháp lập trình hướng đối tượng và các ưu, nhược điểm

Phương pháp lập trình hướng đối tượng và các ưu, nhược điểm

Từ lâu phương pháp lập trình hướng đối tượng đã không còn xa lạ với các lập trình viên. Bài viết sẽ chia sẻ với các bạn một số ưu điểm và nhược điểm của phương pháp này. Tìm hiểu thêm: Bài tập ôn luyện Lập trình hướng đối tượng từ cơ bản đến nâng […]
4 khái niệm bạn phải biết khi lập trình hướng đối tượng

4 khái niệm bạn phải biết khi lập trình hướng đối tượng

Lập trình hướng đối tượng (Object-oriented programming) là một phương pháp quen thuộc đối với các chuyên gia phát triển phần mềm. Sau đây là 4 khái niệm bạn bắt buộc phải biết để hiểu về lập trình hướng đối tượng. Mục lục1. Class (Lớp)2. Objects (Đối tượng)3. Attributes (Thuộc tính)4. Methods (Phương thức) 1. […]
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

Để nâng cao kỹ năng Lập trình hướng đối tượng – Object-Oriented Programming (OOP), bạn cần liên tục rèn luyện, thực hành. Trong bài viết hôm nay, Got It sẽ chia sẻ tới bạn các bài tập lập trình hướng đối tượng. Các bài tập này sẽ giúp bạn ôn lập trình hướng đối tượng […]
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 […]
Bộ 7 câu hỏi phỏng vấn lập trình hướng đối tượng

Bộ 7 câu hỏi phỏng vấn lập trình hướng đối tượng

Với nền kinh tế hiện đại ngày nay, lập trình viên đang là một nghề được nhiều doanh nghiệp săn đón. Bộ câu hỏi phỏng vấn lập trình hướng đối tượng được chia sẻ sau đây sẽ hỗ trợ bạn nắm bắt cơ hội nghề nghiệp. Cùng Got It tìm hiểu nhé. Mục lục1. Lập […]