Bridge Design Pattern với một ví dụ

Dec 03 2022
Mẫu thiết kế cầu là gì? Theo định nghĩa của GOF, Mẫu cầu nối “Tách rời một phần trừu tượng khỏi phần triển khai của nó để cả hai có thể thay đổi độc lập” Trong Mẫu thiết kế cầu nối, có hai lớp. Lớp đầu tiên là lớp Trừu tượng và lớp thứ hai là Lớp Thực hiện.

Mẫu thiết kế cầu là gì?

Theo các định nghĩa của GOF, Bridge Pattern “Tách tách một phần trừu tượng khỏi phần triển khai của nó để cả hai có thể thay đổi độc lập”

Trong Bridge Design Pattern, có hai lớp.

Lớp đầu tiên là lớp Trừu tượng

và lớp thứ hai là Lớp thực hiện.

Nếu tôi thực hiện bất kỳ thay đổi nào trong Lớp triển khai thì nó sẽ không ảnh hưởng đến Lớp trừu tượng.

Tương tự, nếu tôi thực hiện bất kỳ thay đổi nào trong Lớp trừu tượng, thì nó sẽ không ảnh hưởng đến lớp Thực hiện.

Sơ đồ lớp của mẫu thiết kế cầu:

Như thể hiện trong sơ đồ trước, mẫu thiết kế cầu bao gồm bốn thành phần. Chúng như sau:

Trình triển khai :
Đây là một giao diện phải được triển khai bởi tất cả các lớp triển khai. Giao diện này sẽ hoạt động như một cầu nối giữa lớp trừu tượng và lớp triển khai.

ConcreteImplementationA / ConcreteImplementaionB :
Đây là các lớp triển khai Trình triển khai. Các lớp này chứa sự thực hiện cụ thể của tất cả các hoạt động.

Trừu tượng :

Đây sẽ là một lớp trừu tượng. xác định các phương thức để mã máy khách gọi. lớp trừu tượng này chứa biến triển khai được bảo vệ chứa tham chiếu đến đối tượng thực hiện triển khai.

ConcreteAbstraction/RefinedAbstraction :
Đây là các lớp được kế thừa từ lớp trừu tượng Abstraction.

Hiểu mẫu thiết kế cầu với một ví dụ:

Giả sử chúng ta muốn (sản xuất và lắp ráp) ô tô mới thuộc hai loại sau (BMW hoặc Mercedes).

để làm được điều đó chúng ta cần có phân xưởng cho từng loại để thực hiện hai nhiệm vụ trước đó (sản xuất và lắp ráp).

Vì vậy, sơ đồ lớp cho ví dụ của chúng tôi sẽ giống như sau:

Thực hiện :

Khi nào chúng ta cần sử dụng Bridge Design Pattern trong các ứng dụng thời gian thực?

Chúng ta cần sử dụng Mẫu thiết kế cầu nối trong các ứng dụng thời gian thực, khi:
1- Chúng ta muốn ẩn các chi tiết triển khai khỏi máy khách.
2- Chúng tôi muốn việc lựa chọn hoặc chuyển đổi triển khai thực hiện trong thời gian chạy thay vì thời gian thiết kế.
3- Chúng tôi muốn cả lớp trừu tượng và triển khai đều có thể mở rộng bởi các lớp con.
4- Chúng tôi muốn tránh sự ràng buộc khớp nối chặt chẽ giữa một sự trừu tượng hóa và việc thực hiện nó.
5- Những thay đổi trong việc triển khai trừu tượng sẽ không ảnh hưởng đến khách hàng.

Liên kết mã đầy đủ trên Github:

StructuralDesignPatterns/4-BridgeDP