java设计模式之适配器模式

适配器模式:将一个类的接口转换成客户希望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作。

适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。

适配器模式有两种:类适配器模式和对象适配器模式及哦,其中对象适配器模式更常用。

UML类图

类适配器模式:

//vga接口
interface Vga{
    void showVga();
}
//usb接口
interface Usb{
    void showUsb();
}
//usb实现类usber
class Usber implements Usb{
    @Override
    public void showUsb() {
        System.out.println("usb");
    }
}
//适配器
class Adapter1 extends Usber implements Vga{
    @Override
    public void showVga() {
        showUsb();
    }
}
public class Test {
    public static void main(String[] args) {
        Vga vga = new Adapter1();
        vga.showVga();
    }
}

通过适配器,使vga接口变为usb接口。

对象适配器模式:

//vga接口
interface Vga{
    void showVga();
}
//usb接口
interface Usb{
    void showUsb();
}
//usb实现类usber
class Usber implements Usb{
    @Override
    public void showUsb() {
        System.out.println("usb");
    }
}
//适配器
class Adapter1 implements Vga{
    private Usb usb;
    public Adapter1(Usb usb){
        this.usb = usb;
    }
    @Override
    public void showVga() {
        usb.showUsb();
    }
}
public class Test {
    public static void main(String[] args) {
        Vga vga = new Adapter1(new Usber());
        vga.showVga();
    }
}

通过组合的方式实现适配器功能,在适配器中定义私有变量usb,再定义一个带参数的构造器为对象usb赋值,再在vga接口的实现方法中使用usb对象调用usb接口的方法。

此外还有接口适配器模式,适用于接口中有很多方法,而我们只想使用其中的一个或几个方法,如果我们直接实现接口,那么我们要对所有的方法进行实现,哪怕我们仅仅是对不需要的方法进行置空(只写一对大括号,不做具体方法实现)也会导致这个类变得臃肿,调用也不方便,这时我们可以使用一个抽象类作为中间件,即适配器,用这个抽象类实现接口,而在抽象类中所有的方法都进行置空,那么我们在创建抽象类的继承类,而且重写我们需要使用的那几个方法即可。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章