[Tut 9 - Design Pattern] Prototype

Pattern Prototype là gì?

Ngày nay, development quan trọng nhất là chi phí. Tiết kiệm là một vấn đề lớn khi nhắc đến việc sử dụng tài nguyên máy tính, do đó, các lập trình viên đang cố gắng hết sức để tìm ra giải pháp cải thiện hiệu năng của phần mềm. Trong lập trình oop, khi nhắc đến việc khởi tạo object, bạn có thể tìm thấy một cách tốt hơn để tạo ra một object đó là cloning. Ý tưởng này là một design pattern đặc biệt có liên quan đến việc khởi tạo object, thay vì tạo ra object, prototype pattern sử dụng cloning. Nếu việc tạo ra object lớn và tốn nhiều tài nguyên, bạn hãy nên sử dụng prototype pattern này.

Prototype pattern nó cho phép một object tạo ra những customized object mà không cần biết class của nó và bất kỳ chi tiết gì làm thế nào để tạo ra chúng. Ở thời điểm hiện tại, sẽ có rất nhiều người đang confuse khái niệm này với Factory Pattern, những giữa chúng thì hoàn toàn khác nhau. Sự khác nhau này, tôi sẽ trình bày vào một bài viết khác, ở đây tôi chỉ tập trung cho prototype pattern.

Giải pháp:

Quy định cụ thể những loại object muốn tạo ra bằng cách sử dụng một prototypical instance tạo ra các object mới bằng cách sao chép chính nó.

Triển khai

Prototype pattern sẽ sử dụng những abstract class, class diagram dưới đây chỉ có 3 loại và làm cho việc thực hiện rất dễ dàng.



Prototype Design Pattern

Những class tham gia vào prototype pattern bao gồm :
  1. Client class - Tạo mới object bằng cách gọi Prototype thực hiện clone chính nó.
  2. Prototype - Khai báo một interface cho việc clone chính nó.
  3. Concrete Prototype - Triển khai những operation cho việc clone chính nó.
Quá trình clone bắt đầu với việc initialized và instantiated class. Client class yêu cầu một object mới của loại đó và gửi yêu cầu tới class Prototype. Một ConcretePrototype, phụ thuộc vào loại object mà Client cần, sẽ đảm nhận việc clone object Client thông qua method clone(). Khi đó, một object mới thuộc loại Client sẽ được tạo ra.

Kết luận

Bạn nên sử dụng prototype pattern khi phát triển một hệ thống cần hạn chế sw ràng buộc với chính những products của nó được tạo ra. Vì nó chỉ tạo ra object vào thời điểm chương trình được chạy. Ngoài ra, nó còn làm giảm tối thiểu việc tạo ra những instance quá dài dòng theo cách mà ngôn ngữ lập trình cung cấp - từ khóa new.

Nhận xét

Bài đăng phổ biến từ blog này

Base64 image – Lợi hay hại?

Hàm "tap" trong Laravel Collection