適配器模式(Adapter)
將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口,適配器模式使得原本由于接口不兼容而不能在一起工作的那些類可以在一起工作
示例代碼:
PowerA的對象能夠使用work()方法,而PowerB不能使用work()方法,所以要寫一個Adapter 適配器,implements PowerA,
public class Demo {
public static void main(String[] args) {
PowerA powerA = new PowerAImpl();
work(powerA);
PowerB powerB = new PowerBImpl();
//接口不兼容
//work(powerB);
Adapter d = new Adapter(powerB);
work(d);
}
public static void work(PowerA a){
System.out.println("正在連接");
a.insert();
System.out.println("工作結(jié)束");
}
}
//適配器
class Adapter implements PowerA{
private PowerB powerB;
public Adapter(PowerB powerB){
this.powerB = powerB;
}
@Override
public void insert() {
powerB.connet();
}
}
interface PowerB{
public void connet();
}
class PowerBImpl implements PowerB{
@Override
public void connet() {
System.out.println("電源B開始工作");
}
}
interface PowerA{
public void insert();
}
class PowerAImpl implements PowerA{
@Override
public void insert() {
System.out.println("電源A開始工作");
}
}
運行效果:
還有一種適配器:
定義的接口中方法比較多,一個類實現(xiàn)這個接口的時候,需要重寫所有方法,如果這個類用不到所有方法,可以寫一個適配器,讓類繼承這個適配器,要用到哪個方法就重寫哪個方法。
interface Animal{
public void sing();
public void cry();
public void run();
public void swim();
}
//適配器2
abstract class AnimalFunction{
public void sing() {
}
public void cry() {
}
public void run() {
}
public void swim() {
}
}
class Dog extends AnimalFunction{
//要用哪個方法就重寫哪個方法
public void run() {
}
}