Giả sử tôi đang tạo một lớp Objective-C đại diện cho một phần nhỏ và muốn tạo các phiên bản không thể thay đổi và có thể thay đổi được.Cách hiệu quả nhất để tạo ra các phiên bản bất biến và có thể thay đổi của một lớp khách quan-c là gì?
Theo các mẫu trong khuôn khổ Nền tảng, bạn có thể thấy phương thức fractionByAddingFraction:
trong phiên bản bất biến và addFraction:
trong phiên bản có thể thay đổi.
Nghịch lý mà tôi đang gặp phải là cách chỉ bao gồm logic thêm phân số một lần giữa hai lớp. Dường như phương pháp fractionByAddingFraction:
bất biến cần biết (và sử dụng) phương pháp addFraction:
có thể thay đổi để tránh trùng lặp mã, và bao gồm các phương pháp có thể thay đổi trong việc thực hiện lớp không thay đổi có nghĩa là chúng có thể được gọi là không thay đổi đối tượng, đánh bại điểm.
Giải thích ngắn gọn (hoặc tốt hơn nữa, việc tiếp tục ví dụ đơn giản này) sẽ được nhiều người đánh giá cao!
Ví dụ lớp học của bạn dường như đại diện cho một đối tượng _value_, vì vậy tôi không nghĩ bạn nên cung cấp một phiên bản có thể thay đổi cho nó. __Chỉ cần biến nó thành không thay đổi .__ –
@ Jordão Với ví dụ cụ thể này, bạn hoàn toàn đúng. Tôi chỉ cảm thấy rằng đây là cách dễ nhất và ngắn gọn nhất để giải thích sự nhầm lẫn của tôi về khái niệm nói chung (vì nó liên quan đến các lớp phức tạp hơn). Bất kỳ suy nghĩ về cách nó sẽ được thực hiện bất kể? – user1385983