Trong các nội dung bài viết trước chúng ta đang cùng tìm hiểu về những Pattern trực thuộc đội Creational Design Pattern. Trong bài bác này, bọn họ đã khám phá qua 1 Pattern khác ở trong nhóm Structural Design PatternAdpater Pattern.

Bạn đang xem: Adapter pattern là gì


Adapter Pattern là gì?

Adapter Pattern is a structural kiến thiết pattern that convert the interface of a class inkhổng lồ another interface clients expect. Adapter lets classes work together that couldn’t otherwise because of incompatible interfaces.

Adapter Pattern (Người đưa đổi) là 1 giữa những Pattern ở trong nhóm kết cấu (Structural Pattern). Adapter Pattern có thể chấp nhận được những inteface (giao diện) ko liên quan tới nhau rất có thể thao tác làm việc cùng cả nhà. Đối tượng giúp kết nối những interface call là Adapter.

Adapter Pattern giữ lại mục đích trung gian thân hai lớp, biến đổi interface của một hay những lớp có sẵn thành một interface khác, thích hợp mang lại lớp sẽ viết. Như vậy chất nhận được các lớp có những interface khác nhau rất có thể dễ dàng tiếp xúc xuất sắc cùng nhau trải qua interface trung gian, không buộc phải đổi khác code của lớp tất cả sẵn tương tự như lớp sẽ viết.

*
*
*
*
*

VietnameseTarget.java

package com.tekkenbasara.mobi.patterns.structural.adapter;public interface VietnameseTarget void send(String words);JapaneseAdaptee.java

package com.tekkenbasara.mobi.patterns.structural.adapter;public class JapaneseAdaptee public void receive(String words) System.out.println("Retrieving words from Adapter ...");System.out.println(words);TranslatorAdapter.java

package com.tekkenbasara.mobi.patterns.structural.adapter;public class TranslatorAdapter implements VietnameseTarget private JapaneseAdaptee adaptee;public TranslatorAdapter(JapaneseAdaptee adaptee) this.adaptee = adaptee;
Overridepublic void send(String words) System.out.println("Reading Words ...");System.out.println(words);String vietnameseWords = this.translate(words);System.out.println("Sending Words ...");adaptee.receive(vietnameseWords);private String translate(String vietnameseWords) System.out.println("Translated!");return "こんにちは";VietnameseClient.java

package com.tekkenbasara.mobi.patterns.structural.adapter;public class VietnameseClient public static void main(String<> args) VietnameseTarget client = new TranslatorAdapter(new JapaneseAdaptee());client.send("Xin chào");Output đầu ra của công tác trên:

Reading Words ...Xin chàoTranslated!Sending Words ...Retrieving words from Adapter ...こんにちは

lấy ví dụ Adapter Pattern với BufferedReader

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.print("Enter your name: ");String s = br.readLine();Nlỗi các bạn thấy:

System.in: đấy là một Adaptee. System.in là một static instance của lớp InputStream, nó phát âm tài liệu trường đoản cú Console cùng trả về 1 byte stream.BufferedReader : đấy là Target, nó đồng ý tài liệu là một character stream.

Xem thêm: Đồng Nghĩa Của Prestigious Là Gì ? Nghĩa Của Từ Prestigious Trong Tiếng Việt

InputStreamReader : đây là một Adapter trung tâm hai interface ko tương thích: System.in cùng BufferedReader hỗ trợ cho bọn chúng rất có thể chuyển động được với nhau.Client: là áp dụng đã thao tác với Target interface.

Lợi ích của Adapter Pattern là gì?

Việc thực hiện Adapter Pattern mang lại những tiện ích sau:


Cho phép các đối tượng người sử dụng bao gồm interface giao tiếp khác nhau hoàn toàn có thể shop cùng tiếp xúc với nhau.Tăng kĩ năng áp dụng lại thư viện cùng với interface không thay đổi do không tồn tại mã mối cung cấp.

Bên cạnh phần đông công dụng trên, nó cũng nó một số điểm yếu nhỏ dại sau:

Tất cả các yên cầu được chuyển tiếp, vì vậy có tác dụng tăng lên một ít tiền.Đôi khi bao gồm quá nhiều Adapter được thiết kế trong một chuỗi Adapter (chain) trước khi tới được thử khám phá đích thực.

Sử dụng Adapter Pattern khi nào?

Có thể dùng Adapter Pattern trong số những ngôi trường phù hợp sau:


Adapter Pattern góp nhiều lớp có thể thao tác làm việc với nhau dễ dãi cơ mà bình thường bắt buộc. Một trường phù hợp hay gặp gỡ đề xuất cùng rất có thể vận dụng Adapter Pattern là lúc thiết yếu thừa kế lớp A, tuy nhiên ý muốn một tấm B gồm có cách xử trí giống như nhỏng lớp A. Khi kia bạn cũng có thể thiết lập B theo Object Adapter, những giải pháp xử lý của B vẫn Call đều giải pháp xử lý của A Lúc yêu cầu.khi ao ước thực hiện một lớp đã mãi sau trước kia cơ mà interface áp dụng không cân xứng như ý.khi ước ao tạo ra đều lớp có tác dụng áp dụng lại, bọn chúng păn năn hợp với các lớp không liên quan hay đều lớp quan yếu đoán thù trước được cùng rất nhiều lớp này không tồn tại những interface tương xứng.Cần đề nghị bao gồm sự biến đổi interface từ không ít nguồn khác nhau.

Một vài class thực hiện Adapter Pattern:

java.util.Arrays#asList()java.io.InputStreamReader(InputStream) (returns a Reader)java.io.OutputStreamWriter(OutputStream) (returns a Writer)javax.xml.bind.annotation.adapters.XmlAdapter#marshal() cùng #unmarshal()

Tài liệu tđê mê khảo:

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *