intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Mẫu thiết kế: Prototype

Chia sẻ: _ _ | Ngày: | Loại File: PPTX | Số trang:40

4
lượt xem
1
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng giới thiệu Prototype Pattern – một trong các Creational Pattern, giúp khởi tạo đối tượng bằng cách sao chép từ một đối tượng đã tồn tại, không phụ thuộc vào lớp cụ thể. Nội dung trình bày rõ cách thức sao chép, thay đổi thuộc tính cần thiết và lý do nên áp dụng mô hình này trong các hệ thống cần giảm chi phí khởi tạo đối tượng. Mời các bạn cùng tham khảo cuốn sách để biết thêm chi tiết!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Mẫu thiết kế: Prototype

  1. PROTOTYPE
  2. Nội dung 0 0 0 Tổng1quan 2 Motivation Đặc3 điểm 0 0 0 Hệ4 quả 5 Demo Các quan Cài đặt, 6 liên mẫu
  3. 01 Tổng quan
  4. Prototype là gì? ● Là một trong những Creational Pattern. ● Mục đích: khởi tạo một đối tượng bằng cách sao chép object đã tồn tại mà không bị phụ thuộc code ● Cách thức hoạt động: cung cấp cơ chế để sao chép từ object ban đầu sang object mới và thay đổi giá trị một số thuộc tính nếu cần.
  5. Sử dụng Prototype khi nào? ● Có 1 object và cần phải tạo 1 ọbject mới khác dựa trên object bạn đầu mà không thể sử dụng toán tử new hay các hàm contructor để khởi tạo. ● Khởi tạo đối tượng lúc run-time: có thể xác định đối tượng cụ thể sẽ được khởi tạo lúc run-time nếu class được implement/extend từ một Prototype. ● Cấu hình một ứng dụng với dynamic class ● Muốn truyền đối tượng vào một hàm nào đó để xử lý, thay vì truyền đối tượng gốc có thể ảnh hưởng dữ liệu thì truyền đối tượng sao chép. ● Chi phí của việc tạo mới đối tượng (bằng cách sử dụng toán tử new) là lớn. ● Ẩn độ phức tạp của việc khởi tạo đối tượng từ phía Client.
  6. 02 Motivation
  7. Đặt vấn đề Giả sử có một object và muốn tạo một bản sao chính xác của nó. Sẽ làm điều này như thế nào? Đầu tiên, phải tạo một object mới của cùng một lớp. Sau đó, phải đi qua tất cả các field của object gốc và sao chép các giá trị của chúng sang object mới. Không phải tất cả các object đều có thể được sao chép theo cách đó vì một số field của object có thể là phương thức private và không thể sử dụng từ bên ngoài object.
  8. Giải pháp Tạo một tập hợp các object, được xác định cấu hình theo nhiều cách khác nhau. Khi cần một object giống như object bạn đã định cấu hình, chỉ cần clone một prototype thay vì xây dựng một object mới từ đầ
  9. Vấn đề thực tế ● Trong sản xuất, các prototype được sử dụng để thực hiện các thử nghiệm trước khi bắt đầu sản xuất hàng loạt ● Trong sinh học, quá trình phân bào được thực hiện tương tự Prototype Pattern, các tế bào ban đầu đóng vai trò giống như prototype
  10. 03 Đặc điểm
  11. Cấu trúc
  12. Các thành viên ● Prototype: phần khai báo interface, phương thức hỗ trợ clone(). Trong nhiều trường hợp, một interface chỉ có một phương thức clone() duy nhất. ● ConretePrototype: implement phương thức clone() được khai báo ở interface. Ngoài việc sao chép dữ liệu của object ban đầu, nó có thể xử lý một vài trường hợp liên quan đến sao chép các object được liên kết, gỡ rối các phụ thuộc đệ quy,... ● Client: có thể sao chép bất kì object nào thông qua Prototype interface
  13. 04 Hệ quả
  14. Ưu điểm ● Cải thiện performance ● Giảm độ phức tạp cho việc khởi tạo đối tượng ● Giảm việc phân lớp, tránh việc tạo nhiều lớp con cho việc khởi tạo đối tượng như của Abstract Factory Pattern. ● Khởi tạo object mới bằng cách thay đổi một vài thuộc tính của object (các object có ít điểm khác biệt nhau) ● Khởi tạo object mới bằng cách thay đổi cấu trúc
  15. Nhược điểm ● Clone từ object phức tạp, có liên kết vòng (tham chiếu hoặc kế thừa từ object khác) có thể rất khó
  16. 05 Cách cài đặt
  17. Cách cài đặt ● Shallow copy: chỉ sao chép giá trị các object thông thường, còn các giá trị lồng nhau vẫn tham chiếu đến cùng object ● Deep copy: sao chép tất cả thuộc tính và tất cả object được tham chiếu
  18. 06 So sánh, Các mẫu liên quan
  19. 06 Demo
  20. Các mẫu liên quan ● Factory Methods ● Abstract Factory ● Commands ● Composite ● Decorator ● Singletons
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
47=>2