Kiến trúc mẫu thiết kế phần mềm

Software Design Pattern

Kiến trúc mẫu thiết kế phần mềm là một khái niệm quan trọng trong lĩnh vực phát triển phần mềm. Nó giúp các nhà phát triển xây dựng nên các ứng dụng hiệu quả và dễ bảo trì. Trong bài viết này, chúng ta sẽ tìm hiểu về một số mẫu thiết kế phần mềm phổ biến.

Active Object

Mẫu Active Object tách biệt việc thực thi phương thức và việc gọi phương thức trong các luồng điều khiển riêng. Mục tiêu của mẫu này là tạo ra tính đồng thời bằng cách sử dụng gọi phương thức bất đồng bộ và một bộ lập lịch để xử lý các yêu cầu.

Active Object

Balking

Mẫu Balking chỉ thực thi một hành động trên đối tượng khi đối tượng đang ở trạng thái cụ thể.

Binding properties

Mẫu Binding properties kết hợp nhiều bộ quan sát để đồng bộ hoặc điều phối các thuộc tính trong các đối tượng khác nhau.

Compute kernel

Mẫu Compute kernel thực hiện một phép tính nhất định nhiều lần song song, khác nhau bởi các tham số nguyên được sử dụng với tính toán chỉ số con trỏ không rẽ nhánh vào các mảng chia sẻ, như phép nhân ma trận được tối ưu hóa trên GPU hoặc mạng nơ-ron tích chập.

Xem thêm  Hard Fork Ethereum Cho Người Mới Bắt Đầu | Paxful Blog

Double-checked locking

Mẫu Double-checked locking giảm thiểu tải của việc có được khóa bằng cách kiểm tra điều kiện khóa (gợi ý khóa) một cách không an toàn trước khi tiến hành khóa thực tế. Điều này có thể không an toàn khi triển khai trên một số ngôn ngữ/phần cứng, do đó đôi khi có thể coi là một mô hình nghịch lý.

Event-based asynchronous

Mẫu Event-based asynchronous giải quyết các vấn đề với mẫu bất đồng bộ xảy ra trong các chương trình đa luồng.

Guarded suspension

Mẫu Guarded suspension quản lý các thao tác yêu cầu cả khóa và điều kiện tiên quyết trước khi thực hiện thao tác đó.

Join

Mẫu Join-pattern cung cấp một cách để viết các chương trình đồng thời, song song và phân tán bằng cách truyền thông qua tin nhắn. So với việc sử dụng các luồng và khóa, đây là mô hình lập trình cấp cao hơn.

Lock

Mẫu Lock cho phép một luồng khóa tài nguyên, ngăn chặn các luồng khác truy cập hoặc sửa đổi nó.

Messaging design pattern (MDP)

Mẫu Messaging Design Pattern (MDP) cho phép trao đổi thông tin (tin nhắn) giữa các thành phần và ứng dụng.

Monitor object

Mẫu Monitor object là một đối tượng có các phương thức bị loại trừ nhau, từ đó chống lại việc nhiều đối tượng cố gắng sử dụng nó cùng một lúc.

Reactor

Mẫu Reactor cung cấp một giao diện bất đồng bộ cho các nguồn tài nguyên phải được xử lý theo cách đồng thời.

Xem thêm  TPBank Livebank là gì? Chi tiết cách sử dụng LiveBank TPBank

Read-write lock

Mẫu Read-write lock cho phép truy cập đọc đồng thời vào một đối tượng, nhưng yêu cầu truy cập độc quyền cho các hoạt động ghi. Để thực hiện việc ghi, có thể sử dụng một nguồn tín hiệu dùng để ghi và có thể sử dụng cơ chế Copy-on-write hoặc không sử dụng cơ chế đó.

Scheduler

Mẫu Scheduler kiểm soát rõ ràng khi các luồng có thể thực thi mã đơn luồng.

Thread pool

Mẫu Thread pool tạo ra một số luồng để thực hiện một số nhiệm vụ, usually được tổ chức dưới dạng một hàng đợi. Thông thường, có nhiều nhiệm vụ hơn là luồng. Có thể coi là một trường hợp đặc biệt của mẫu object pool.

Thread-specific storage

Mẫu Thread-specific storage là bộ nhớ tĩnh hay “toàn cục” cục bộ cho một luồng.

Safe Concurrency with Exclusive Ownership

Mẫu Safe Concurrency with Exclusive Ownership giúp tránh việc sử dụng cơ chế đồng thời thời gian chạy, vì sở hữu độc quyền có thể được chứng minh. Điều này là một khả năng đáng chú ý của ngôn ngữ Rust, nhưng việc kiểm tra thời gian biên dịch không phải là phương pháp duy nhất, một lập trình viên thường sẽ thiết kế thủ công những mẫu này vào mã – bỏ qua việc sử dụng cơ chế khóa vì lập trình viên đánh giá rằng một biến cụ thể không bao giờ được truy cập cùng lúc bởi nhiều tiến trình.

CPU atomic operation

Kiến trúc CPU x86 và nhiều kiến trúc CPU khác hỗ trợ một loạt lệnh nguyên tử đảm bảo an toàn bộ nhớ để sửa đổi và truy cập các giá trị nguyên thủy (số nguyên). Ví dụ, hai luồng có thể tăng cường một bộ đếm an toàn. Những khả năng này cũng có thể được sử dụng để triển khai các cơ chế cho các mẫu đồng thời khác như đã đề cập ở trên. Ngôn ngữ C# sử dụng lớp Interlocked để thực hiện những khả năng này.

Xem thêm  MIỄN PHÍ 5 NGÀY - HỌC KINH DOANH ONLINE FREE

Để biết thêm thông tin về các mẫu thiết kế phần mềm khác, hãy truy cập Wiki Fin.