Trường ĐH Sư Phạm Kỹ Thuật TPHCM
Khoa Công nghệ thông tin
Bộ môn Công nghệ phần mềm
THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
BRIDGE PATTERN
GVHD: Nguyễn Trần Thi Văn
1
&&
Bridge
Bridge
OOP
OOP
Đặt vấn đề
Yêu cầu tô màu red và blue cho circle và square.
Circl
e
Shape
Bridge
Square
2
&&
Bridge
Bridge
OOP
OOP
1.
2.
3.
4.
5.
6.
7.
Bố cục
Tổng quan
Cấu trúc
Tính chất
Hệ quả, lĩnh vực áp dụng
Ưu điểm, khuyết điểm
Các mẫu liên quan
Demo
3
&&
Bridge
Bridge
OOP
OOP
Tổng quan
Định nghĩa:
Mẫu Bridge là một mẫu thiết kế hướng đối tượng
thuộc loại Structural Patterns, được sử dụng với
tần suất trung bình.
Mục đích :
Phần ảo
OO
P
Chứa
trong
Kế thừa
Phần
thực thi
// Định nghĩa các chức năng
Bridge
// Thực thi các chức năng
4
&&
Bridge
Bridge
OOP
OOP
Tổng quan
Định nghĩa:
Mẫu Bridge là một mẫu thiết kế hướng đối tượng
thuộc loại Structural Patterns, được sử dụng với
tần suất trung bình.
Mục đích :
Tách rời phần ảo và phần thực thi ra riêng biệt.
Dễ dàng thay đổi từng phần một cách độc lập
và linh động.
Che giấu chi tiết của phần thực thi đối với
client.
5
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Các lớp/đối tượng tham gia
Abstraction
Implementation
RefineAbstraction
Concretelmplement
6
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Các lớp/đối tượng tham gia
Abstraction
Implementation
RefineAbstraction
Concretelmplement
Abstraction: là lớp trừu tượng khai báo các chức năng và cấu trúc cơ bản,
trong lớp này có 1 thuộc tính là 1 thể hiện của giao tiếp Implementation.
7
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Các lớp/đối tượng tham gia
Abstraction
Implementation
RefineAbstraction
Concretelmplement
Implementation : là giao tiếp thực thi của lớp các chức năng nào đó của
Abstraction.
8
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Các lớp/đối tượng tham gia
Abstraction
Implementation
RefineAbstraction
Concretelmplement
RefineAbstraction: là định nghĩa các chức năng mới hoặc chức năng đã
có trong Abstraction.
9
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Các lớp/đối tượng tham gia
Abstraction
Implementation
RefineAbstraction
Concretelmplement
ConcreteImplement: là các lớp định nghĩa tường minh các thực thi trong
lớp giao tiếp Implementation.
10
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Implementation
Abstraction
extends
extends
RefineAbstraction
implements
implements
Concretelmplement
11
&&
Bridge
Bridge
OOP
OOP
Cấu trúc
Shape redCircle = new Circle(new
Red());
redCircle.draw();
Abstraction
extends
extends
RefineAbstraction
Implementation
implements
implements
Concretelmplement
12
&&
Bridge
Bridge
OOP
OOP
Tính chất
Tách rời phần xử lý (giải thuật) với phần
chủ thể (nơi thực thi các giải thuật đó).
Có thể nâng cấp theo từng phần, triển
khai theo từng cặp.
Có lớp RefinedAbstraction mở rộng giao
diện được định nghĩa bởi Abstraction.
Mỗi giao diện thực thi sẽ thực thi lại giao
diện nhưng được định nghĩa cụ thể.
13
&&
Bridge
Bridge
OOP
OOP
Hệ quả
Tách được phần giao diện của đối tượng.
Cải thiện khả năng mở rộng.
Ẩn thông tin với các đối tượng Client.
OOP
14
&&
Bridge
Bridge
OOP
OOP
Lĩnh vực áp dụng
Ẩn chi tiết với các đối tượng “Client”. (Việc thay
đổi thực thi không ảnh hưởng đến client.)
Thực thi có thể thay đổi trong thời gian thực thi
chứ không phải thời gian thiết kế.
Muốn có nhiều lớp con với nhiều thực thi từ một
phần ảo.
Việc mở rộng phần thực và phần ảo được thực
hiện với các lớp con.
Muốn chia sẻ thực thi trong nhiều đối tượng và
chi tiết giao diện được ẩn với đối tượng.
OOP
15
&&
Bridge
Bridge
OOP
OOP
Ưu & nhược điểm
Ưu điểm:
Giảm sự phụ thuộc giữa abstraction và
implementation.
Giảm số lượng các lớp con không cần thiết.
Code gọn và giảm kích thước phần thực thi.
Giao diện và thực thi có thể được thay đổi
một cách độc lập.
Cải thiện khả năng mở rộng.
OOP
16
&&
Bridge
Bridge
OOP
OOP
Ưu & nhược điểm
Nhược điểm:
Tăng độ phức tạp.
Số lần gọi gián tiếp tăng gấp đôi.
Ảnh hưởng đến hiệu suất của chương trình.
OOP
17
&&
Bridge
Bridge
OOP
OOP
Các mẫu liên quan
Abstract Factory: Một Abstract Factory có thể tạo và
cấu hình một mẫu Bridge cụ thể.
Adapter: Mẫu Adapter hướng tới kết hợp các lớp
không liên quan để chúng làm việc với nhau. Còn
Bridge cho phép phần trừu tượng (phần ảo) và phần
thực thi độc lập với nhau bằng cách tạo ra một cầu
nối giữa hai thứ.
OOP
18
&&
Bridge
Bridge
OOP
OOP
Demo
OOP
19
&&
Bridge
Bridge
OOP
OOP
Tài liệu tham khảo
Bridge Pattern trong Java, Yuen’s Blog,
/>1-bridge-pattern/
Bridge pattern, VOER,
/> Design Pattern – Bridge, Nixforest,
/>n-bridge/
OOP
20
&&
Bridge
Bridge
OOP
OOP
OOP
21