Adapter Pattern ဆိုတာကတော့ Structural Pattern တစ်ခုပါ။ Adapter ဆိုတာနဲ့ ပလပ်ပေါက်တွေ မှာ ထပ်မရရင် သုံးသည့် adapter ကို တန်းမြင်ကြမှာပါ။
Adapter Pattern က အဲဒီ အတိုင်းပါပဲ။ မတူညီသည့် class နှစ်ခုကို တစ်ခု နဲ့ တစ်ခု သုံးလို့ ရအောင် ပြောင်းပေးတာပါ။
ဥပမာ XML ကနေ JOSN object ပြောင်းပေးသလိုပေါ့။

Class Diagram ကို ကြည့်ရအောင်။

အခု Mile to KM ပြောင်းသည့် ဥပမာ ကြည့်ရအောင်။

Java အနေနဲ့ ရေးရင်
interface MileConverter {
double convertMilesToKilometers(double miles);
}
// MileToKilometerAdapter class that directly converts miles to kilometers
class MileToKilometerAdapter implements MileConverter {
@Override
public double convertMilesToKilometers(double miles) {
// Perform the conversion directly within the adapter
return miles * 1.60934;
}
}
// Client code that uses the MileConverter interface
public class Main {
public static void main(String[] args) {
MileConverter mileConverter = new MileToKilometerAdapter();
double miles = 10;
double kilometers = mileConverter.convertMilesToKilometers(miles);
System.out.println(miles + " miles is equal to " + kilometers + " kilometers");
}
}
Pros and Cons
Adapter pattern သုံးခြင်းဖြင့် Single Responbility ကို လိုက်နာထားသလို Open/Close Principle ကိုလည်း လိုက်နာပါတယ်။
မလိုအပ်ပဲ သုံးရင်တော့ interface တွေ အရမ်းများသွားတာ ဖြစ်နိုင်ပါတယ်။