当前位置: 移动技术网 > IT编程>软件设计>设计模式 > 适配器模式(2)

适配器模式(2)

2019年02月01日  | 移动技术网IT编程  | 我要评论
适配器模式的定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。 图解: A、B两个图框代表已经塑模成型的物体A和物体B,现在要求把A和B安装在一起使用,如何安装?两者的接口不一致,是不可能安装在一起使用的,那怎么办?引入一个物体C,如下: ...

适配器模式的定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作。

图解

a、b两个图框代表已经塑模成型的物体a和物体b,现在要求把a和b安装在一起使用,如何安装?两者的接口不一致,是不可能安装在一起使用的,那怎么办?引入一个物体c,如下:

引入物体c后,c适应了物体a的接口,同时也适应了物体b的接口,然后三者就可以组合成一个完整的物体;其中物体c就是适配器。

适配器模式的三个角色

target目标角色:客户端所调用的接口;

adaptee源角色:你想把谁转换成目标角色,这个谁就是adaptee;

adapter适配器角色:适配器模式的核心角色,其他两个角色都是已经存在的角色,而适配器角色是需要新建立的,他的职责非常简单:把源角色转换为目标角色(通过类继承或者类关联的方式);

适配器模式的两种情况

类适配器:类适配器是类间继承;

target角色:

public interface target {
    /**
     * 目标角色已有的方法
     */
    void request();
}
public class concretetarget implements target {
    @override
    public void request() {
        system.out.println("if you need any help,pls call me!");
    }
}

adaptee源角色:

public class adaptee {
    /**
     * 原有的业务逻辑
     */
    public void dosomething(){
        system.out.println("i'm kind of busy,leave me alone,pls!");
    }
}

adapter适配器角色:

public class adapter extends adaptee implements target {

    @override
    public void request() {
        super.dosomething();
    }
}

客户端调用:

public class client {

    public static void main(string[] args) {
        //原有的业务逻辑
        target target = new concretetarget();
        target.request();//if you need any help,pls call me!
        //增加适配器后的逻辑
        target target1 = new adapter();
        target1.request();//i'm kind of busy,leave me alone,pls!
    }
}

 

对象适配器:是对象的合成关系,也可以说是类的关联关系(用到的场景较多)

target角色和adaptee源角色同类适配器一样,此处省略,唯一不一样的地方在于适配器类apdater的编写

adapter适配器:

public class adapter implements target {
    /**
     * 此处本应使用接口接收,但是源角色只有类,没有接口,故使用类
     */
    private adaptee adaptee = null;
    
    public adapter(adaptee adaptee){
        this.adaptee = adaptee;
    }

    @override
    public void request() {
        adaptee.dosomething();
    }
}

 

适配器模式的注意事项

适配器模式最好在详细设计阶段不要考虑它,他不是为了解决还处在开发阶段的问题,而是解决正在服役的项目问题;还有一点,项目一定要遵守依赖倒置原则和里氏替换原则,否则即使再适合使用适配器的场合下,也会带来非常大的改造

 

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网