Bài viết được sự cho phép của tác giả Trần Hữu Cương
1. Immutable là gì? Sự khác nhau giữa Immutable với mutable.
Ví dụ: Trong Java String là Immutable còn StringBuffer và StringBuilder là mutable.
1 Class/Đối tượng được coi là immutable nếu các thuộc tính của nó không bao giờ bị thay đổi và chỉ có thể thiết lập lúc khởi tạo.
- Ví dụ Immutable với String
Kết quả
str1: first-second str2: first
- Ví dụ Mutable với StringBuffer
Kết quả:
str1: first-second str2: first-second
Tham khảo việc làm NodeJS hấp dẫn trên TopDev
2. Tại sao lại dùng Immutable
- Thread Safe: Khi sử dụng immutable object ta sẽ không cần phải lo tới việc nhiều thread cùng làm thay đổi giá trị của 1 object
- Sử dụng các immutable object làm tham số của method sẽ không sợ nó bị thay đổi sau khi method kết thúc
- Sử dụng immutable object để làm key trong HashMap hoặc đẩy vào HashTable mà không gặp vấn đề gì khi lấy ra.
3. Cách tạo 1 Class Immutable
- Phải là final class (không thể thừa kế bởi class khác)
- Các field phải là private final
- Không có các method làm thay đổi trạng thái của các field (Ví dụ: chỉ có hàm get, không có các hàm set)
- Nếu có field nào là Object thì field đó cũng phải là 1 immutable Object hoặc khi khởi tạo/lấy ra field đó ta phải clone ra 1 bản khác.
Bài viết gốc được đăng tải tại stackjava.com
Có thể bạn quan tâm:
- Mechanical Sympathy Là Gì? Lập Trình BackEnd bằng Java
- Fuzzy search là gì? Những điều cần biết về thuật toán fuzzy
- Một số nguyên tắc, định luật trong lập trình
Tìm việc làm IT mới nhất tại TopDev ngay!