Skip to main content

Đối tượng bất biến là gì?

Trong lập trình hướng đối tượng, một đối tượng bất biến là một đối tượng có thuộc tính không thể thay đổi sau khi nó được tạo.Hầu hết các đối tượng, ngược lại, là các đối tượng có thể thay đổi, có nghĩa là một số hoặc tất cả các thuộc tính của chúng có thể được thay đổi tự do sau khi tạo.Một loạt các ngôn ngữ máy tính có khả năng tạo các đối tượng bất biến, bao gồm Java, C ++, Erlang, TCL và Scala.tuyên bố một đối tượng có thể thay đổi khác là bất biến.Phương pháp tạo một lớp bất biến khác nhau tùy thuộc vào ngôn ngữ máy tính được sử dụng.Bất kể ngôn ngữ nào, một lớp bất biến phải không có phương pháp có thể thay đổi dữ liệu nội bộ của nó và không có cách nào để thay đổi phương pháp mdash;tức là ghi đè hoặc quá tải mdash;theo cách sẽ thay đổi dữ liệu nội bộ của nó.Đây là phức tạp hơn của hai cách tiếp cận.Để tạo ra một đối tượng bất biến từ một đối tượng có thể thay đổi khác, mặt khác, người ta thường có thể áp dụng một từ khóa để chỉ định đối tượng là bất biến.

Ví dụ, tạo đối tượng bất biến trong Java phụ thuộc rất nhiều vào từ khóa cuối cùng.Một cách nhanh chóng để làm cho một lớp bất biến trong Java là tuyên bố lớp học, cũng như tất cả các phương pháp và thành viên dữ liệu của nó, cuối cùng.Một chiến lược tương tự cũng có thể được sử dụng trong C ++ với từ khóa Const.Tuy nhiên, những cách tiếp cận này, tùy thuộc vào nội dung của lớp, có thể không phải là cách tốt nhất.Nói chung, các đối tượng thường có thể được tạo ra bất biến bằng cách duy trì cẩn thận dữ liệu nội bộ của chúng. Tạo một đối tượng bất biến bằng cách sử dụng từ khóa, như trong ví dụ trên, thường dễ dàng hơn nhiều so với việc viết toàn bộ lớp là bất biến.Sử dụng phương pháp này, tuy nhiên, có những nguy hiểm của nó.Khi chỉ định rõ ràng một đối tượng bất biến theo cách này, điều quan trọng là người lập trình viên phải chắc chắn rằng tất cả các thuộc tính và dữ liệu phù hợp đã được đưa vào đối tượng trước tiên.Dựa vào một đối tượng không đầy đủ có thể là nguy hiểm, đặc biệt nếu nó thiếu một thông tin cần thiết. Nếu một đối tượng có thể thay đổi nhưng yêu cầu dữ liệu bất biến phải được tạo đúng, dữ liệu bất biến phải được khởi tạo trước khi đối tượng có thể thay đổi.Các đối tượng bất biến luôn luôn bất biến, cho dù chúng là giá trị dữ liệu hoặc các đối tượng lớn và phải luôn luôn được đối xử như vậy.Nói chung, một đối tượng bất biến không thể được biến đổi sau khi nó được tạo ra, mặc dù đôi khi chúng có thể được sao chép dưới dạng các đối tượng có thể thay đổi.Nó thường có thể được giả định rằng một đối tượng bất biến và bất kỳ bản sao nào của nó cũng là bất biến, có thể ngăn chặn các vấn đề dữ liệu hoặc bộ nhớ.