Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 16

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG TP.

HCM

Flyweight Design Pattern

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM


GIẢNG VIÊN HƯỚNG DẪN: HUỲNH LƯU QUỐC LINH
NHÓM: 10
THÀNH VIÊN NHÓM

STT Họ Tên MSSV

01 Nguyễn Hữu Dũng N21DCCN018

02 Phạm Thanh Linh N21DCCN139

03 Hà Hữu Thắng N21DCCN174

04 Nguyễn Hoàng Thiện N21DCCN080


NỘI DUNG
1 Giới Thiệu

2 Mục đích ra đời

3 Ưu và nhược điểm

4 Kiến trúc

5 Demo
GIỚI THIỆU
FLYWEIGHT PATTERN

Mẫu thiết kế Flyweight là một mẫu thiết kế cấu trúc cho phép bạn lắp nhiều đối
tượng hơn vào dung lượng RAM có sẵn bằng cách chia sẻ, phân phối các phần
trạng thái chung - riêng giữa nhiều đối tượng thay vì giữ tất cả dữ liệu trong
mỗi đối tượng.

Khi nhiều đối tượng (objects) phải được xử lý mà chương trình không thể chịu
nổi một lượng dữ liệu khổng lồ, thì cần dùng flyweight.
NỘI DUNG
1 Giới Thiệu

2 Mục đích ra đời

3 Ưu và nhược điểm

4 Kiến trúc

5 Demo
VẤN ĐỀ
1. Trong quá trình phát triển game FPS open world, sử dụng nhiều hiệu
ứng kỹ xảo như cháy nổ, ánh sáng để tạo ra trải nghiệm thú vị cho người
chơi.

2. Sau khi hoàn thành và chia sẻ trò chơi cho bạn bè, phát hiện ra rằng trò
chơi gặp sự cố trên các thiết bị khác do thiếu dung lượng RAM.

3. Nguyên nhân là mỗi đối tượng Particle chứa quá nhiều thông tin, gây ra
áp lực lớn lên bộ nhớ RAM khi có quá nhiều đối tượng được tạo ra trên
màn hình.

4. Flyweight pattern là một giải pháp có thể giúp giảm áp lực lên bộ nhớ
bằng cách chia sẻ thông tin chung giữa các đối tượng và chỉ lưu trữ thông
tin đặc biệt cho mỗi đối tượng.
GIẢI PHÁP
1. Trong lớp Particle, các biến color và sprite tiêu tốn nhiều bộ nhớ và
chúng lưu trữ dữ liệu gần như giống nhau trên tất cả các particle.

2. Dữ liệu không đổi như màu sắc và sprite của một particle được gọi là
trạng thái intrinsic, tồn tại bên trong đối tượng và không thay đổi.

3. Phần còn lại của trạng thái của đối tượng, thường bị thay đổi bởi các
đối tượng khác, được gọi là trạng thái extrinsic.
NỘI DUNG
1 Giới Thiệu

2 Mục đích ra đời

3 Ưu và nhược điểm

4 Kiến trúc

5 Demo
ƯU
NHƯỢC ĐIỂM
Ưu điểm
• Giảm số lương đối tượng được tạo ra bằng cách chia sẻ đối tượng. Vì vậy
tiết kiệm bộ nhớ và các thiết bị lưu trữ cần thiết
• Cải thiện khả năng cache dữ liệu vì thời gian đáp ứng nhanh
• Tăng Performance cho hệ thống

Nhược điểm
• Đánh đổi về mặt sử dụng CPU khi các flyweight object bị truy cập nhiều
lần.
• Code trở nên phức tạp hơn nhiều. Các thành viên mới trong team sẽ luôn
thắc mắc tại sao trạng thái của một thực thể lại được tách ra theo cách
như vậy. Độ dễ hiểu (understandability) thấp
NỘI DUNG
1 Giới Thiệu

2 Mục đích ra đời

3 Ưu và nhược điểm

4 Kiến trúc

5 Demo
KIẾN TRÚC
1. Mẫu Flyweight là một phần của việc tối ưu hóa chương
trình, nên trước khi sử dụng, cần xác định rằng chương trình
gặp vấn đề về tiêu tốn RAM do có một lượng lớn các đối
tượng tương tự trong bộ nhớ cùng một lúc và không giải
quyết được bằng cách khác.

2. Lớp Flyweight chứa phần của trạng thái ban đầu của đối
tượng có thể được chia sẻ giữa nhiều đối tượng. Trạng thái
này được gọi là intrinsic.

3. Lớp Context chứa trạng thái extrinsic, duy nhất trong tất
cả các đối tượng ban đầu, khi được ghép cặp với một
flyweight, đại diện cho toàn bộ trạng thái của đối tượng ban
đầu.
KIẾN TRÚC
4. Hành vi của đối tượng ban đầu thường được giữ trong lớp
Flyweight, nhưng cũng có thể di chuyển vào lớp Context, sử
dụng flyweight như một đối tượng dữ liệu.

5. Client tính toán hoặc lưu trữ trạng thái extrinsic của các
flyweight, và xem flyweight là một đối tượng mẫu có thể
được cấu hình bằng cách truyền dữ liệu ngữ cảnh vào
phương thức của nó.

6. Nhà máy Flyweight quản lý một bộ sưu tập các flyweight


hiện có và trả về một flyweight đã tồn tại hoặc tạo mới khi
được gọi bởi client.
NỘI DUNG
1 Giới Thiệu

2 Mục đích ra đời

3 Ưu và nhược điểm

4 Kiến trúc

5 Demo
THANK
YOU VERY
MUCH!
NHÓM 10

You might also like