Báo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng ĐỀ TÀI Mẫu trang trí DECORATOR Pattern Báo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng ĐỀ TÀI Mẫu trang trí DECORATOR Pattern Báo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng ĐỀ TÀI Mẫu trang trí DECORATOR Pattern Báo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng ĐỀ TÀI Mẫu trang trí DECORATOR Pattern Báo Cáo Môn Học Thiết Kế Phần Mềm Hướng Đối Tượng ĐỀ TÀI Mẫu trang trí DECORATOR Pattern
Trang 1TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TP.HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM
MÔN THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG
ĐỀ TÀI:
DECORATOR
1
Trang 2MỤC ĐÍCH
• Gắn các chức năng bổ sung cho các đối
tượng (gán động)
• Decorator cung cấp một số thay đổi mềm
dẻo cho các phân lớp để mở rộng thêm các chức năng
2
Ý
nghĩa
Cấu
trúc
Điều kiện SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 3Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Ý NGHĨA
• Bổ sung trách nhiệm cho đối tượng tại thời
điểm thực thi
• Đây được xem là sự thay thế hiệu quả cho
phương pháp kế thừa trong việc bổ sung trách nhiệm cho đối tượng và mức tác động
là ở mức đối tượng thay vì ở mức lớp như phương pháp kế thừa
3
Trang 4CẤU
Component
+ Operati on(): voi d
Decorator
# component: Component + Operati on(): voi d
+ SetComponent(Com ponent): voi d
ConcreteDecoratorA
- addedState: stri ng + Operati on(): voi d
ConcreteDecoratorB
+ AddedBehavi or(): voi d + Operati on(): voi d
ConcreteComponent
+ Operati on(): voi d
#component
Hình: Cấu trúc
Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 5CẤU TRÚC (TT)
• Component: là một interface chứa các
phương thức ảo (ở đây là Operation)
• ConcreteComponent: là một lớp implement
Component, cài đặt phương thức cụ thể (Operation được cài đặt tường minh)
• Decorator: là một lớp ảo, implement
Component đồng thời cũng chứa 1 thể hiện của Component, phương thức Operation
trong Decorator sẽ được thực hiện thông qua thể hiện này
• ConcreteDecoratorX: là các lớp kế thừa từ
Decorator, khai báo tường minh các phương thức, đặc biệt trong các lớp này khai báo
tường minh các “trách nhiệm” cần thêm vào
Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 6ĐIỀU KIỆN SỬ DỤNG
• Khi bạn muốn thay đổi động mà không ảnh hưởng (tác
động) đến các đối tượng khác
• Khi bạn muốn thêm vào các chức năng hoặc rút bỏ khi
không cần nữa
6
Ý
nghĩa
Cấu
trúc
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 7ƯU ĐIỂM - KHUYẾT ĐIỂM
Ưu điểm:
• Cung cấp một giải pháp linh hoạt hơn các chức
năng cho 1 đới tượng so với cách thừa kế truyền thống
• Cung cấp giải pháp để dễ thay đổi hành vi của
đối tượng
• Ngoài ra, bạn sẽ code các chức năng riêng trong
từng class riêng thay vì gộp chung nhiều chức năng khác nhau vào 1 class làm cho các thành phần dễ mở rộng hơn trong tương lai
7
Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 8ƯU ĐIỂM - KHUYẾT ĐIỂM (TT)
Khuyết điểm:
• Việc bảo trì là một vấn đề vì nó cung cấp nhiều
loại object của các class chức năng
8
Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 9VÍ DỤ:
class Logical View
LightDecorator
- costOflight: decimal = 60000 + CalculateCost(): decimal + LightDecorator(Icar)
GPSDecorator
- costOfGpsDevice: decimal = 30000 + CalculateCost(): decimal
+ GPSDecorator(Icar)
HifiDecorator
- costOfAmpli: decimal = 20000
- costOfSpeaker: decimal = 90000 + CalculateCost(): decimal + HifiDecorator(Icar)
decoratorCar
# car: Icar + CalculateCost(): decimal + decoratorCar(Icar)
simpleCar
- costOfChassis: decimal = 100000
- costOfEngine: decimal = 50000
- costOfWheels: decimal = 50000 + CalculateCost(): decimal
«interface»
Icar
+ CalculateCost(): decimal
#car
9
Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 10VÍ DỤ (TT)
Một chiếc xe ô tô gồm 3 bộ phận cơ bản như bánh xe, động cơ và khung xe, nhưng ngoài 3 bận
cơ bản đó, để chúng ta có thể “trang trí” thêm các phụ kiện khác mà không ảnh hưởng đến cấu trúc của xe lúc đầu, chúng ta sẽ phải dùng đến Decorator Pattern:
• Component: Icar (một interface)
• ConcreteComponent: simpleCar
• Decorator: decoratorCar
• ConcreteDecorator: LightDecorator,
GPSDecorator, HifiDecorator
10
Ý
nghĩa
Cấu
trúc
Điều kiện
SD
Ưu-Khuyết
Ví dụ
Mục đích
Trang 11THE END
THANK YOU ALL FOR WATCHING
11