-->
侧边栏壁纸
博主头像
断钩鱼 博主等级

行动起来,活在当下

  • 累计撰写 28 篇文章
  • 累计创建 34 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

设计模式—适配器模式

halt
2020-04-09 / 0 评论 / 0 点赞 / 1916 阅读 / 0 字

适配器模式

适配器模定义

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

在适配器模式中,存在两种不同的模式结构:类的适配器模式和对象的适配器模式

对象适配器模式

graph TD A[MiPhone] B[IPhone] C[Adapter] B--继承IPhone-->C A--组合MiPhone--> C-->D(重写IPhone.getIOS方法,方法体中调用MiPhone.getAndroidOS)
  • MiPhone 类
/**
 * @author : mengshuo
 * @Description : 小米手机类
 */
public class MiPhone {

    public void getAndroidOS(){
        System.out.println("我是安卓系统!");
    }
}
  • IPhone 类
/**
 * @author : mengshuo
 * @Description : 苹果手机类
 */
public class IPhone {
    public void getIOS(){
        System.out.println("我是 iOS !");
    }
}
  • 适配器 Adapter 类
/**
 * @author : mengshuo
 * @Description : 适配器类 将 安卓 适配到 IOS ....
 */
public class Adapter extends IPhone {

    private MiPhone miPhone;
    
    /**
     * 构造方法
     * @param miPhone
     */
    public Adapter(MiPhone miPhone) {
        this.miPhone = miPhone;
    }
    @Override
    public void getIOS() {
        miPhone.getAndroidOSOS();
    }
}
  • 测试代码
/**
 * @author : mengshuo
 * @Description : 测试
 */
public class Test {
    public static void main(String[] args) {
	//向父类转型
        IPhone iPhone = new Adapter(new MiPhone());
        iPhone.getIOS();
        //结果: 我是安卓系统!
    }
}

类适配器模式

graph TD A[MiPhone] B[IPhone] C[Adapter] B--实现IPhone-->C A--继承MiPhone--> C-->D(实现IPhone.getIOS方法,方法体中调用MiPhone.getAndroidOS)
  • MiPhone 类
/**
 * @author : mengshuo
 * @Description : 小米手机类
 */
public class MiPhone {

    public void getAndroidOS(){
        System.out.println("我是安卓系统!");
    };
}
  • IPhone 类
/**
 * @author : mengshuo
 * @Description : 苹果手机类
 */
public interface IPhone {
    void getIOS();
}
  • 适配器 Adapter 类
/**
 * @author : mengshuo
 * @Description : 适配器类 将 安卓 适配到 IOS ....
 */
public class Adapter extends MiPhone implements IPhone {

    /**
     * 实现 IPhone 的方法
     */
    @Override
    public void getIOS() {
        //调用 MiPhone 的方法
        getAndroidOS();
    }
}
  • 测试代码
/**
 * @author : mengshuo
 * @Description : 测试
 */
public class Test {
    public static void main(String[] args) {
	//向上转型
        IPhone iPhone = new TestAdapter();
        iPhone.getIOS();
        //结果: 我是安卓系统!
    }
}

总结

对象适配器模式通过组合来实现适配器功能,而类的适配器模式通过多继承或实现来实现适配器功能

0
博主关闭了所有页面的评论