seminar prototype pattern
TRANSCRIPT
1
LOGO
PROTOTYPE PATTERN
Nhóm 04:Trần Thị HuyềnHoàng Đình ĐồngVõ Công TâmPhạm Thị Thanh Thuý
www.tamnhinso.info
NỘI DUNG
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC 2
DEMO
Ưu điểm và hạn chế
Các tình huống áp dụng
Cấu Trúc tổng quát
Mục đích – ý nghĩa – tính chất
Định nghĩa
3
ĐỊNH NGHĨA
Thuộc nhóm Creational Patterns. Prototype là mẫu thiết kế chỉ định ra một đối
tượng đặc biệt để khởi tạo, nó sử dụng một thể nghiệm sơ khai rồi sau đó sao chép ra các đối tượng khác từ mẫu đối tượng này.
Dùng để khởi tạo một đối tượng bằng cách copy một đối tượng khác đã tồn tại (gọi là prototype - nguyên mẫu).
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
4
MỤC ĐÍCH – Ý NGHĨA
Dùng khi cần tạo ra một đối tượng theo một khuôn mẫu của đối tượng đã có.
Khi việc tạo một thể hiện (instance) của một class là rất tốn thời gian hoặc phức tạp.
Cần tạo ra những class chỉ khác biệt trong kiểu xử lý, dùng để giảm thiểu số lượng các subclass bằng cách cloning một nguyên mẫu (prototype).
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
5
MỤC ĐÍCH - Ý NGHĨA (2)
Việc tạo lập đối tượng mới sẽ dựa trên đối tượng mẫu, không sử dụng toán tử new hoặc constructor … được cung cấp bởi ngôn ngữ lập trình.
Do chúng ta không biết được thông tin nội tại chi tiết bên trong đối tượng:
• Đối tượng có thể đã che dấu • Chỉ cung cấp ra bên ngoài một lượng thông tin giới hạn• Không thể dùng toán tử new và sao chép những dữ liệu (vốn
không đầy đủ) cho một đối tượng mới.
Cách tốt nhất là để cho chính đối tượng “mẫu” tự xác định thông tin và dữ liệu sao chép.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
6
TÍNH CHẤT
Tần suất sử dụng thấp hoặc trung bình
Đặc trưng chủ yếu của prototype là dùng phương thức clone() để sao chép đối tượng.
Có liên quan chặc chẽ với mẫu Abstract Factory
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
7www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
8
CẤU TRÚC
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
9
CẤU TRÚC (2)
Prototype: Cung cấp interface để copy đối tượng. Cài đặt phương thức Clone() là phương thức
copy bản thân đối tượng đã tồn tại. Client: Tạo mới đối tượng bằng cách yêu cầu một đối tượng
đã có (prototype) copy chính nó.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
10
CẤU TRÚC (3)
ConcreatePrototype: Là lớp kế thừa lớp Prototype. Implement interface được cung cấp bởi
Prototype để copy chính bản thân nó. Thể hiện cụ thể phương thức clone().
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
11
TÌNH HUỐNG ÁP DỤNG
Mẫu Prototype được sử dụng khi hệ thống cần độc lập với các đối tượng mà nó sinh ra và:
Khi lớp cần dùng để sinh ra đối tượng được xác định tại thời điểm chương trình chạy hoặc:
Tránh trường hợp xây dựng các phần tử khởi tạo đối tượng ngang bằng với số lượng kiểu đối tượng bổ sung dự định tạo ra hoặc:
Khi các đối tượng của cùng một class có ít sự khác biệt.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
12
HỆ QUẢ
Thêm và loại bỏ những sản phẩm vào thời gian chạy.
Xác định các đối tượng mới bằng cách thay đổi các giá trị.
Xác định các đối tượng mới bằng cách thay đổi cấu trúc.
Giảm subclassing. Định hình một ứng dụng với những lớp động.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
13
ƯU ĐIỂM
Prototype giúp ẩn đi những lớp con rời rạc từ phía client: làm giảm số lớp con mà client cần biết.
Thêm và loại bỏ concreate lúc run-time : Prototype hợp nhất quá trình khởi tạo 1 object mới vào trong hệ thống đơn giản chỉ bằng cách đăng kí một thực thể nguyên mẫu với client.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
14
ƯU ĐIỂM (2)
Khởi tạo object mới bằng cách thay đổi một vài attribute của object : Một object linh động sẽ để cho chúng ta tự define một hành động nào đó thông qua sự kết hợp với một object hơn là define một class mới. Client có thể hiện một tác động khác bằng cách ủy quyền cho lớp prototype.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
15
ƯU ĐIỂM (3)
Khởi tạo object mới bằng cách thay đổi cấu trúc : Rất nhiều ứng dụng xây dựng hệ thống từ nhiều phần và các phần con. Các phần con lại khởi tạo từ nhiều phần con khác nghĩa là các phần đó có thể được khởi tạo từ việc copy một nguyên mẫu từ một “cấu trúc” khác.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
16
ƯU ĐIỂM (3)
Khởi tạo object mới bằng cách thay đổi cấu trúc : Rất nhiều ứng dụng xây dựng hệ thống từ nhiều phần và các phần con. Các phần con lại khởi tạo từ nhiều phần con khác nghĩa là các phần đó có thể được khởi tạo từ việc copy một nguyên mẫu từ một “cấu trúc” khác.
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
17
HẠN CHẾ
Giảm việc phân lớp: Đôi khi hệ thống quá phức tạp vì có quá nhiều class, và cây thừa kế của lớp khởi tạo có quá nhiều lớp song song cùng mức. Prototype pattern rõ ràng làm giảm số lớp và sự phức tạp của cây thừa kế (class hierarchy)
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
18
VÍ DỤ
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
LOGO
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
19
LOGO
www.tamnhinso.info Faculty for High Quality Training - The University of Technical Education HCMC
20