TRƯỜ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
MỤ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.
Mục đích
Ý
nghĩa
Cấu
trúc
Điều kiện SD
ƯuKhuyết
Ví dụ
2
Ý 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.
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
3
CẤU
TRÚC
class Logical View
Component
+
#component
Operati on(): voi d
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
Decorator
ConcreteComponent
+
Operati on(): voi d
#
com ponent: Com ponent
+
+
Operati on(): voi d
SetCom ponent(Com ponent): voi d
ConcreteDecoratorA
-
addedState: stri ng
+
Operati on(): voi d
ConcreteDecoratorB
+
+
AddedBehavi or(): voi d
Operati on(): voi d
Hình: Cấu trúc
mẫu.
4
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
CẤ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 5
Đ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.
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
•
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
ƯU ĐIỂM
ĐIỂM
Ưu điểm:
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
•
•
•
-
KHUYẾT
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
ƯU ĐIỂM - KHUYẾT ĐIỂM
(TT)
Khuyết điểm:
Mục đích
•
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.
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
8
VÍ DỤ:
class Logical View
«interface»
Icar
+ CalculateCost(): decimal
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
#car
decoratorCar
simpleCar
-
# car: Icar
costOfChassis: decimal = 100000
costOfEngine: decimal = 50000
costOfWheels: decimal = 50000
+ CalculateCost(): decimal
+ decoratorCar(Icar)
+ CalculateCost(): decimal
HifiDecorator
GPSDecorator
-
costOfGpsDevice: decimal = 30000
+ CalculateCost(): decimal
+ GPSDecorator(Icar)
-
costOfAmpli: decimal = 20000
costOfSpeaker: decimal = 90000
+ CalculateCost(): decimal
+ HifiDecorator(Icar)
LightDecorator
-
costOflight: decimal = 60000
+ CalculateCost(): decimal
+ LightDecorator(Icar)
9
VÍ DỤ (TT)
Mục đích
Ý
nghĩa
Cấu
trúc
Điều
kiện
SD
ƯuKhuyết
Ví dụ
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 ngồ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
THE END
THANK YOU ALL FOR
WATCHING
11