7 mẫu thiết kế phần mềm quan trọng nhất

Để tìm hiểu sâu toàn diện về chủ đề Mẫu thiết kế phần mềm, hãy xem Mẫu thiết kế phần mềm: Thực tiễn tốt nhất cho nhà phát triển, được tạo bởi C.H. Afzal, một kỹ sư phần mềm kỳ cựu có nhiều năm kinh nghiệm tại Netflix, Microsoft và Oracle. Phần lớn những điều dưới đây được tóm tắt từ khóa học của anh ấy.

Tại sao thiết kế mẫu?

Các mẫu thiết kế đã trở thành một đối tượng của một số tranh cãi trong thế giới lập trình trong thời gian gần đây, phần lớn là do nhận thức của họ ’sử dụng quá mức dẫn đến mã có thể khó hiểu và quản lý hơn.

Điều quan trọng là phải hiểu rằng các Mẫu thiết kế không bao giờ có nghĩa là bị hack cùng với các phím tắt để được áp dụng một cách khó hiểu, một kích cỡ phù hợp với tất cả các cách thức mã của bạn. Cuối cùng không có sự thay thế nào cho khả năng giải quyết vấn đề thực sự trong công nghệ phần mềm.

Tuy nhiên, sự thật vẫn là Mẫu thiết kế có thể cực kỳ hữu ích nếu được sử dụng trong các tình huống phù hợp và vì những lý do đúng đắn. Khi được sử dụng một cách chiến lược, họ có thể làm cho một lập trình viên hiệu quả hơn đáng kể bằng cách cho phép họ tránh phát minh lại bánh xe tục ngữ, thay vào đó sử dụng các phương pháp được tinh chỉnh bởi những người khác. Họ cũng cung cấp một ngôn ngữ chung hữu ích để khái niệm hóa các vấn đề và giải pháp lặp đi lặp lại khi thảo luận với người khác hoặc quản lý mã trong các nhóm lớn hơn.

Điều đó đang được nói, một cảnh báo quan trọng là đảm bảo rằng cách thức và lý do đằng sau mỗi mẫu cũng được nhà phát triển hiểu.

Không cần phải quảng cáo thêm (theo thứ tự quan trọng chung, từ hầu hết đến ít nhất):

Các mẫu thiết kế quan trọng nhất

  1. Người độc thân

Mẫu singleton được sử dụng để giới hạn việc tạo một lớp chỉ một đối tượng. Điều này có lợi khi cần một (và chỉ một) đối tượng để phối hợp các hành động trên toàn hệ thống. Có một số ví dụ về nơi chỉ tồn tại một thể hiện của một lớp, bao gồm bộ đệm, nhóm luồng và đăng ký.

Nó tầm thường để khởi tạo một đối tượng của một lớp - nhưng làm thế nào để chúng ta đảm bảo rằng chỉ có một đối tượng được tạo ra? Câu trả lời là làm cho hàm tạo ‘private riêng cho lớp mà chúng ta dự định định nghĩa là một singleton. Theo cách đó, chỉ các thành viên của lớp có thể truy cập vào hàm tạo riêng và không ai khác.

Cân nhắc quan trọng: Nó có thể phân lớp đơn lẻ bằng cách làm cho hàm tạo được bảo vệ thay vì riêng tư. Điều này có thể phù hợp trong một số trường hợp. Một cách tiếp cận được thực hiện trong các kịch bản này là tạo một thanh ghi các singletons của các lớp con và phương thức getInstance có thể lấy tham số hoặc sử dụng biến môi trường để trả về singleton mong muốn. Sau đó, sổ đăng ký duy trì ánh xạ tên chuỗi tới các đối tượng singleton, có thể được truy cập khi cần.

2. Phương pháp nhà máy

Một nhà máy bình thường sản xuất hàng hóa; một nhà máy phần mềm sản xuất các đối tượng. Và không chỉ vậy - nó làm như vậy mà không chỉ định lớp chính xác của đối tượng sẽ được tạo. Để thực hiện điều này, các đối tượng được tạo bằng cách gọi một phương thức nhà máy thay vì gọi một hàm tạo.

Thông thường, việc tạo đối tượng trong Java diễn ra như vậy:

Một sốClass someClassObject = new someClass ();

Vấn đề với cách tiếp cận ở trên là mã sử dụng đối tượng someClass, đột nhiên trở nên phụ thuộc vào việc triển khai cụ thể của someClass. Không có gì sai khi sử dụng mới để tạo các đối tượng nhưng nó đi kèm với hành lý kết hợp chặt chẽ mã của chúng tôi với lớp triển khai cụ thể, đôi khi có thể có vấn đề.

3. Chiến lược

Mẫu chiến lược cho phép nhóm các thuật toán liên quan theo một sự trừu tượng hóa, cho phép chuyển đổi một thuật toán hoặc chính sách cho một thuật toán khác mà không cần sửa đổi ứng dụng khách. Thay vì trực tiếp thực hiện một thuật toán, mã nhận các hướng dẫn thời gian chạy chỉ định nhóm thuật toán nào sẽ chạy.

4. Người quan sát

Mẫu này là một phụ thuộc một-nhiều giữa các đối tượng để khi một đối tượng thay đổi trạng thái, tất cả các phụ thuộc của nó được thông báo. Điều này thường được thực hiện bằng cách gọi một trong các phương thức của họ.

Để đơn giản, hãy nghĩ về những gì xảy ra khi bạn theo dõi ai đó trên Twitter. Về cơ bản, bạn đang yêu cầu Twitter gửi cho bạn (người quan sát) các cập nhật tweet của người (chủ đề) mà bạn đã theo dõi. Mẫu bao gồm hai diễn viên, người quan sát quan tâm đến các bản cập nhật và chủ thể tạo ra các bản cập nhật.

Một chủ đề có thể có nhiều người quan sát và là mối quan hệ một đối với nhiều người. Tuy nhiên, một người quan sát có thể tự do đăng ký cập nhật từ các chủ đề khác. Bạn có thể đăng ký nguồn cấp tin tức từ một trang Facebook, đây sẽ là chủ đề và bất cứ khi nào trang có bài đăng mới, người đăng ký sẽ thấy bài đăng mới.

Xem xét chính: Trong trường hợp có nhiều đối tượng và ít người quan sát, nếu mỗi đối tượng lưu trữ các quan sát viên riêng biệt, nó sẽ tăng chi phí lưu trữ vì một số đối tượng sẽ lưu trữ cùng một người quan sát nhiều lần.

5. Người xây dựng

Như tên của nó, một mẫu xây dựng được sử dụng để xây dựng các đối tượng. Đôi khi, các đối tượng chúng ta tạo ra có thể phức tạp, được tạo thành từ một số đối tượng phụ hoặc yêu cầu một quy trình xây dựng phức tạp. Bài tập tạo các kiểu phức tạp có thể được đơn giản hóa bằng cách sử dụng mẫu xây dựng. Một đối tượng tổng hợp hoặc tổng hợp là những gì một người xây dựng thường xây dựng.

Xem xét chính: Mẫu xây dựng có vẻ giống với mẫu factory nhà máy trừu tượng nhưng một điểm khác biệt là mẫu xây dựng tạo ra một đối tượng từng bước trong khi mẫu nhà máy trừu tượng trả về đối tượng trong một lần.

6. Bộ chuyển đổi

Điều này cho phép các lớp không tương thích hoạt động cùng nhau bằng cách chuyển đổi giao diện của lớp này sang lớp khác. Hãy nghĩ về nó như một loại dịch giả: khi hai nguyên thủ quốc gia không nói một ngôn ngữ chung gặp nhau, thường là một thông dịch viên ngồi giữa hai người và dịch cuộc hội thoại, do đó cho phép giao tiếp.

Nếu bạn có hai ứng dụng, với một đầu ra phun ra dưới dạng XML với đầu vào JSON yêu cầu khác, thì bạn sẽ cần một bộ chuyển đổi giữa hai ứng dụng để làm cho chúng hoạt động trơn tru.

7. Nhà nước

Mẫu trạng thái đóng gói các trạng thái khác nhau mà một máy có thể ở và 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. Cỗ máy hoặc bối cảnh, như được gọi theo kiểu mẫu, có thể có những hành động được thực hiện trên nó để đẩy nó vào các trạng thái khác nhau. Không sử dụng mẫu này, mã sẽ trở nên không linh hoạt và bị vấy bẩn bởi các điều kiện if-other.

Bạn muốn tiếp tục học?

Với các mẫu thiết kế phần mềm: Thực tiễn tốt nhất cho nhà phát triển, bạn sẽ có cơ hội làm nhiều việc hơn là chỉ đọc lý thuyết. Bạn có thể đi sâu vào các vấn đề thực tế và hiểu các giải pháp thực tế với các ví dụ mã thực tế.

Khóa học dựa trên cuốn sách nổi tiếng của Gang of Four, nhưng được trình bày dưới dạng tương tác, dễ tiêu hóa. Bạn sẽ thành thạo 23 mẫu thiết kế nổi tiếng từ cuốn sách một cách tương tác, tìm hiểu các ứng dụng phù hợp của 3 loại mẫu thiết kế chính (sáng tạo, cấu trúc và hành vi) và học cách kết hợp các mẫu thiết kế này vào các dự án của riêng bạn.

Kiểm tra nó ngay.

Được xuất bản lần đầu tại blog.educative.io vào ngày 7 tháng 11 năm 2018.