ADAPTER PATTERN JAVA
Xin chào anh em, hôm nay tôi sẽ nói về một design pattern khá quan trọng nhưng cũng không hề khó quá để anh em có thể tiếp cận, thậm chí nó là một trong những pattern dễ học nhất theo quan điểm cá nhân của mình. Ấy vậy mà ứng dụng của nó lại khá nhiều - Adapter Pattern.
Tổng quan
Trong cuộc sống, chúng ta đã gặp adapter rất nhiều lần nhưng chúng ta không nhận ra. Một ví dụ dễ tưởng tượng nhất là tai nghe và điện thoại iphone. Như chúng ta đã biết, apple kể từ khi ra iphone 7 đã bỏ jack cắm tai nghe 3.0, thay vào đó là tai nghe có cổng lightning. (Đây thực sự là một cú lừa, cổng lightning của họ thậm chí không thể truyền âm thanh, họ dùng nó để bật bluetooth của một chiếc tai nghe có dây LOL)

Và với những ai không có tai nghe cổng lightning thần thánh thì chúng ta phải có một thiết bị giúp chuyển tiếp giữa ổ cắm lightning và jack 3.0 trên tai nghe truyền thống. Đó là một ví dụ khá gần gũi về adapter. (Ngoài ra chúng ta còn có thiết bị chuyển điện áp 110V - 220V, hay lại là một ví dụ kinh điển với apple hub chuyển đổi)
Khi nào nên dùng adapter pattern
Qua ví dụ trên mình nghĩ các bạn cũng phần nào tưởng tượng ra khi nào chúng ta nên sử dụng adapter pattern.
- Khi chúng ta có một đối tượng (điện thoại) và chúng ta muốn tương tác với một mục tiêu (tai nghe) nhưng chúng ta không thể thực hiện tương tác một cách trực tiếp. (thực tế là điện thoại iphone 7 không thể trực tiếp tương tác với tai nghe 3.0)
- Nguồn lực hoặc nhu cầu của chúng ta có hạn, chúng ta không muốn thay đổi đối tượng (mua điện thoại mới hoặc tai nghe mới). Chúng ta chấp nhận, tìm một giải pháp ít tốn kém cũng như mang lại hiệu quả nhanh chóng.
Implementation
- Đầu tiên chúng ta sẽ định nghĩa ra 1 interface điện thoại
- Tiếp theo sẽ là instance mà chúng ta đang có Iphone7
- Tiếp đến là interface tổng quát cho tai nghe với phương thức là connect
- Sau đó là chiếc tai nghe mà chúng ta đang sở hữu: 3.0
- Iphone của chúng ta không thể kết nối với 3.0 earphone nên chúng ta mua một cục adapter
Chú ý: Adapter cần phải kết nối tới tai nghe 3.0 trước khi có thể nghe được bằng iphone 7, nên chúng ta cần có 1 instance của 3.0 earphone trong đây.
- Cuối cùng, hãy cùng nhau kết nối mọi thứ nhé;
- Kết quả chúng ta đã có thể kết nối và nghe nhạc chill 🎶🎧
Note: Mình khởi tạo và build + chạy project bằng gradle
Kết luận
Mình đã implement adapter pattern bằng một use case khá cơ bản và dễ hiểu, anh em có nhận ra đây là loại nào không (adapter pattern có thể triển khai bằng 2 phương pháp). Nếu không hiểu thì đừng ngại inbox cho chúng mình nhé. 😃