Đối với những người đã quen thuộc với mô hình Trung Gian ...Thực hiện mô hình Mediator trong Delphi mà không nhận được tài liệu tham khảo tròn
Tôi muốn thực hiện mô hình Mediator trong Delphi, nhưng trình biên dịch Delphi không thể xử lý các tài liệu tham khảo tròn cần thiết.
Nhìn vào biểu đồ GOF ban đầu từ 'Mẫu thiết kế', Người hòa giải có tham chiếu đến từng đồng nghiệp, nhưng nhiều đối tượng đồng nghiệp có tham chiếu lại cho Người hòa giải.
Đây không phải là một vấn đề trong hầu hết các ngôn ngữ, nhưng trình biên dịch Delphi của tôi là đem lại cho tôi 'F2047 Thông tư đơn vị tham chiếu đến ...'
Sẽ this approach, sử dụng giao diện, hãy sử dụng bất kỳ? (Có vẻ phức tạp)
Tôi đang sử dụng Delphi 2010
[Tóm tắt các giải pháp]
Chỉ cần tóm tắt các câu trả lời được chấp nhận: Trong ngôn ngữ cho phép tham chiếu vòng tròn, bạn có thể bỏ lớp Mediator trừu tượng (như được thảo luận trong phần "Thực hiện" của GoF ở trang 278). Cách duy nhất bạn có thể thực hiện hòa giải viên tại Delphi mà không có một lớp hòa giải trừu tượng là có tất cả các lớp học của bạn trong một đơn vị.
Nếu không, bạn cần thêm lớp cơ sở Dàn xếp trừu tượng ngoài lớp con cụ thể.
Sử dụng của bạn khoản cho ba đơn vị sẽ trông như thế này:
ConcreteColleage1 Sử dụng Mediator
ConcreteMediator Sử dụng Mediator, ConcreateColleague1
Mediator (Không sử dụng một trong hai)
Không tham chiếu vòng tròn!
Tôi đang đề cập đến mẫu hòa giải như được mô tả trong sách Thiết kế mẫu của GoF. Cụ thể, sơ đồ trên trang 274. 'aButton' có tham chiếu đến 'aFontDialogDirector' và ngược lại, 'aFontDialogDirector' có tham chiếu đến 'aButton'. Vì vậy, trong Delphi, hai lớp này phải ở trong cùng một Đơn vị. – awmross
Sau khi đọc câu trả lời của bạn cẩn thận hơn, bây giờ tôi thấy điều này là đúng. Tôi phải tạo ra một lớp trung gian cơ sở trong một đơn vị và phân lớp nó trong một đơn vị khác. Nếu bạn chỉnh sửa câu trả lời của mình, tôi có thể thay đổi câu trả lời của tôi thành câu trả lời :-) – awmross