Tên (và javadocs) ngụ ý rằng MouseAdapter
là một bộ điều hợp (mẫu thiết kế). Nhưng tôi không thấy nó như vậy - nó không thích nghi bất cứ điều gì với bất cứ điều gì, ngay từ cái nhìn đầu tiên ít nhấtTại sao MouseAdapter lại là bộ điều hợp?
Sự thích nghi duy nhất xảy ra là bạn có thể chuyển một thể hiện của MouseAdapter
sang bất kỳ phương pháp nào mong đợi một trong hai giao diện. Vì vậy, bạn có thể sử dụng trường hợp MouseListener
chỉ trong đó MouseMotionListener
được mong đợi. Nhưng không có "dịch" xảy ra. Và nó không phù hợp với UML của GoF - trong phiên bản "class adapter", người ta dự kiến rằng một cuộc gọi đến một phương thức sẽ gọi một phương thức từ adaptee.
Vậy, đó có phải là bộ điều hợp (mẫu thiết kế) hay chỉ là một tên ngẫu nhiên gây nhầm lẫn?
Vấn đề với lý do này là, như các câu trả lời khác cho thấy, không có sẵn các adapter trong tình huống MouseAdapter. Động lực của GoF Adapter (Tôi trích dẫn cuốn sách GoF) là "Đôi khi một lớp bộ công cụ được thiết kế để tái sử dụng không thể tái sử dụng chỉ vì giao diện của nó không khớp với giao diện miền cụ thể mà ứng dụng yêu cầu". MouseAdapter là một * bộ chuyển đổi * vì nó có thể dễ dàng được điều chỉnh (tùy chỉnh) để nắm bắt các sự kiện chuột. Bộ điều hợp GoF cho biết bạn có một số * lớp kế thừa * (bộ công cụ) mà bạn không thể thay đổi, do đó bạn thích nghi với giao diện của nó đối với nhu cầu của ứng dụng của bạn. – Fuhrmanator