Gần đây tôi bắt đầu nhận thấy một sự lặp lại trong một số mã của tôi. Tất nhiên, một khi bạn nhận thấy một sự lặp lại, nó trở nên càu nhàu. Đó là lý do tại sao tôi hỏi câu hỏi này. Ý tưởng là: đôi khi bạn viết các phiên bản khác nhau của cùng một lớp: một phiên bản thô, một phiên bản bị khóa, một phiên bản mặt tiền chỉ đọc, vv Đây là những điều phổ biến để làm cho một lớp học, nhưng các bản dịch là rất cơ học. Trong một ngôn ngữ động, bạn có thể viết một hàm đã thực hiện điều này cho một thể hiện của một lớp (ví dụ: lặp qua tất cả các hàm, thay thế chúng bằng một phiên bản thu thập/giải phóng một Khóa.).Có một thuật ngữ cho khái niệm này, và nó tồn tại trong một ngôn ngữ gõ tĩnh?
Tôi nghĩ một thuật ngữ tốt cho ý tôi là 'lớp phản chiếu'. Bạn tạo một phép biến đổi lấy một lớp và trả về một lớp được sửa đổi trong một lớp mong muốn. Đồng bộ hóa là trường hợp dễ nhất, nhưng có những trường hợp khác: tạo một lớp không thay đổi [các phương thức bọc để chúng sao chép, thay đổi bản sao và gộp nó vào kết quả], tạo một lớp chỉ đọc [giả sử bạn có thể nhận biết các phương thức biến đổi], tạo một lớp xuất hiện để hoạt động với loại A thay vì loại B, v.v.
Điều quan trọng là, về mặt lý thuyết, các phép biến đổi này có ý nghĩa tại thời gian biên dịch. Mặc dù ActorModel <T> có các phương pháp thay đổi tùy thuộc vào T, chúng phụ thuộc vào T theo một cách cụ thể có thể biết được tại thời gian biên dịch (các phương thức ActorModel <T> sẽ trả về tương lai của loại kết quả ban đầu).
Tôi chỉ tự hỏi liệu điều này có được thực hiện bằng ngôn ngữ hay không và nó được gọi là gì.
Nó chắc chắn có vẻ tương tự và bao gồm một số trường hợp. Nhưng, bằng cách sử dụng các khía cạnh, tôi có thể tham gia một lớp học và có phương pháp trả về tương lai thay vì các giá trị bình thường? –
Thông thường bạn không thể thay đổi kiểu trả về bằng AOP, một chút của vấn đề là mã sử dụng nó không biết về các khía cạnh. –