ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

适配器模式

2020-01-16 10:03:54  阅读:265  来源: 互联网

标签:Target 220V 适配器 模式 public 12V void


定义:

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

适配器在生活中还是很常见的,下面就是一个其中一种:电源适配器,目的是将220V电压输出成12V
在这里插入图片描述
就以电源适配器一个适配器模式的例子,我们生活电压是220V的,现在需要输出12V电压,通过电源适配器完成将220V转换成12V的作用。

220V电压类V220:

class V220 {
    void export220(){
        System.out.println("输出电压220V");
    }
}

我们期待的12V接口

interface IV12 {
	//输出12V
    void export12();

}

适配器Adapter继承V220同时又实现IV12 接口

class VAdapter extends V220 implements IV12 {

    @Override
    public void export12() {
    	//将220V转换成12V输出
        System.out.println("输出12V电压");
    }
}

执行测试:

    public static void main(String[] args){

        IV12 iv12 = new VAdapter();
        iv12.export12();

    }

输出结果:

输出12V电压

这样就通过适配器Adapter将原本220V的电压输出成我们期望的12V电压了。

适配器模式通用写法

  • Target 目标角色
    是我们期望的接口,例子中的IV12接口

  • Adaptee 源角色
    已经存在的类或者对象,需要把它转换成目标角色。例子中的V220对象

  • Adapter 适配器对象
    通过继承或实现的方式将源角色(Adaptee)转换成目标角色(Target)

目标角色Target:

interface Target {
    //目标角色自己的方法
    void targetMethod();
}

源角色Adaptee:

class Adaptee {

    public void adapteeMethod(){
        System.out.println("原方法");
    }
}

适配器Adapter

class Adapter extends Adaptee implements Target {
    @Override
    public void targetMethod() {
        adapteeMethod();
    }
}

目标角色的实现类ConcreteTarget

class ConcreteTarget implements Target {
    @Override
    public void targetMethod() {
        System.out.println("目标方法");
    }
}

测试代码:

class ComTest {

    public static void main(String[] args){

        //原有的业务
        Target target = new ConcreteTarget();
        target.targetMethod();

        //增加适配器
        target = new Adapter();
        target.targetMethod();
    }
}

优点

  • 可以让两个没有任何关系的类在一起运行
  • 增加了类的透明性
  • 提高了类的复用度
  • 灵活性高

参考:设计模式之禅

正义啊 发布了82 篇原创文章 · 获赞 16 · 访问量 3万+ 私信 关注

标签:Target,220V,适配器,模式,public,12V,void
来源: https://blog.csdn.net/sjdjdjdjahd/article/details/103990886

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有