Có cách nào để hoán đổi bản thân mình (điều này) với một số đối tượng khác trong Java không?Java tương đương Smalltalk trở thành:
Trong Smalltalk chúng ta có thể viết
Object subclass:myClass [
"in my method I swap myself with someone else"
swapWith:anObject [
self become:anObject.
^nil
]
]
myClass subclass:subClass [
]
obj := myClass new.
obj swapWith:subClass new.
obj inspect.
Kết quả là An instance of subClass
, rõ ràng.
tôi cần phải làm như sau trong Java:
- Tôi đang ở một hệ thống phân cấp một chiều (đạo diễn acyclic graph)
- tại một trong những phương pháp của tôi (sự kiện Phương pháp nghe để được chính xác) Tôi quyết định rằng Tôi không phải là đối tượng phù hợp nhất để ở đây, vì vậy:
- Tôi tạo một đối tượng mới (từ phân lớp của lớp của tôi chính xác), trao đổi bản thân với anh ta và để bản thân bị thu gom rác trong tương lai gần
Vì vậy, trong ngắn hạn, làm thế nào tôi có thể đạt được trong Java self become: (someClass new:someParameters)
? Có một số mẫu thiết kế đã biết tôi có thể sử dụng không?
Tôi muốn thêm mức độ gián tiếp. Một đối tượng container có thể hoán đổi các đối tượng thực hiện giao diện mong muốn. – kiheru
Không giống như trong Smalltalk. Việc sử dụng vùng chứa đơn giản sẽ dễ dàng nhất, ví dụ: trình bao bọc đại diện cho đối tượng "thực" hoặc đặt logic thay thế vào chính lớp DAG. –