Tôi có một đối tượng mà tôi đang chuyển trong một cuộc gọi phương thức. Giả sử tôi đang sử dụng ngôn ngữ chỉ cho phép bạn chuyển đối tượng theo tham chiếu, như Java hoặc PHP. Nếu phương thức thực hiện thay đổi đối tượng, nó sẽ ảnh hưởng đến người gọi. Tôi không muốn điều này xảy ra. Vì vậy, có vẻ như tôi cần tạo một bản sao của đối tượng.Chuyển bản sao của đối tượng sang phương thức - người thực hiện sao chép?
Câu hỏi của tôi là: ai có trách nhiệm sao chép đối tượng? Người gọi, trước khi nó gọi phương thức? Hoặc callee, trước khi nó thay đổi đối tượng?
EDIT: Chỉ cần làm rõ, tôi muốn điều này là một phần của hợp đồng của phương pháp này - rằng nó không bao giờ sửa đổi đối tượng ban đầu. Vì vậy, có vẻ như nó nên được lên đến phương pháp để làm cho bản sao. Nhưng sau đó người gọi không có bảo vệ từ một phương pháp mà không làm điều này đúng cách. Tôi đoán điều đó có thể chấp nhận được - chỉ có một lựa chọn thay thế khác có vẻ là có được điều này được xây dựng trong ngôn ngữ.
Tôi không hiểu điều này. Bạn có một phương thức thay đổi đối tượng, nhưng hợp đồng ngụ ý của phương thức là nó không có. Bạn có thể làm rõ thêm điều này không? –
Phương pháp này không được phép ảnh hưởng đến đối tượng của người gọi, nhưng nó có thể thay đổi bản sao của đối tượng. –