You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Là creational pattern cho phép ta có thể copy object mà không cần phải phụ thuộc vào class của nó.
Vấn đề
Bạn muốn copy một object, điều đầu tiên cần làm đó là tạo một instance mới của class, sau đò duyệt qua toàn bộ các giá trị của các fields thuộc về object hiện có và gán giá trị đó cho object mới tạo. Cách làm này không sai nhưng không thể áp dụng khi object có những private fields.
Ngoài ra còn có một vấn đề khác đó là bạn cần phải biết class tương ứng với object vừa tạo, điều này khiến code của bạn sẽ phụ thuộc vào một class. Hơn nữa có thể bạn chỉ biết mỗi interface của object chứ không biết được class cụ thể của nó.
Giải pháp
Prototype Pattern sẽ uỷ thác việc clone object cho chính object được clone. Cụ thể là bạn có thể định nghĩa một interface chung cho các object mà bạn muốn clone. Đơn giản chỉ là định nghĩa interface với method clone.
Việc triển khai clone method là hoàn toàn giống nhau ở các class. Cụ thể là tạo một object mới, sao lưu toàn bộ giá trị của các fields vào object mới. Bản thân mọi ngôn ngữ lập trình cũng cho phép các object có thể truy cập đến các private field của object khác nên ta hoàn toàn có thể sao lưu các giá trị private một cách dễ dàng.
Một object hỗ trợ cloning sẽ được gọi là prototype.
Khi object của bạn có nhiều fields cũng như các config khác thì việc clone chúng có thể được triển khai ở subclass.
Implementation
(1) Định nghĩa Prototype interface với clone method
(2) ConcretePrototype class sẽ implement Prototype interface, ngoài việc copy object gốc, clone method có thể có các xử lí khác nếu object cần clone là nested object.
The text was updated successfully, but these errors were encountered:
Là
creational pattern
cho phép ta có thể copy object mà không cần phải phụ thuộc vào class của nó.Vấn đề
Bạn muốn copy một object, điều đầu tiên cần làm đó là tạo một instance mới của class, sau đò duyệt qua toàn bộ các giá trị của các fields thuộc về object hiện có và gán giá trị đó cho object mới tạo. Cách làm này không sai nhưng không thể áp dụng khi object có những
private fields
.Ngoài ra còn có một vấn đề khác đó là bạn cần phải biết class tương ứng với object vừa tạo, điều này khiến code của bạn sẽ phụ thuộc vào một class. Hơn nữa có thể bạn chỉ biết mỗi interface của object chứ không biết được class cụ thể của nó.
Giải pháp
Prototype Pattern
sẽ uỷ thác việc clone object cho chính object được clone. Cụ thể là bạn có thể định nghĩa một interface chung cho các object mà bạn muốn clone. Đơn giản chỉ là định nghĩainterface
với methodclone
.Việc triển khai
clone
method là hoàn toàn giống nhau ở các class. Cụ thể là tạo một object mới, sao lưu toàn bộ giá trị của các fields vào object mới. Bản thân mọi ngôn ngữ lập trình cũng cho phép các object có thể truy cập đến các private field của object khác nên ta hoàn toàn có thể sao lưu cácgiá trị private
một cách dễ dàng.Một object hỗ trợ cloning sẽ được gọi là
prototype
.Khi object của bạn có nhiều fields cũng như các config khác thì việc clone chúng có thể được triển khai ở subclass.
Implementation
(1) Định nghĩa
Prototype interface
vớiclone
method(2) ConcretePrototype class sẽ implement
Prototype
interface, ngoài việc copy object gốc,clone
method có thể có các xử lí khác nếu object cần clone là nested object.The text was updated successfully, but these errors were encountered: