Android设计模式--适配器模式--Adapter入门

今天,我们要梳理一下java设计模式的适配器模式。

适配器嘛,想一想我们平常用的电源适配器就知道了,就是把两个不兼容的东西搞通嘛,可以相互联系。

在java中也一样,就是让两个需要一起协调的类,通过适配器协调起来就行了,就是讲一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
首先我们来看两个图,我们通常会有这样一个问题,厂商给我接口和我们现有接口对接不起来、旧的数据和新的数据接不起来等等。

解决这问题,在不改变原来两个接口的情况下,我们完全可以在写一个类,做个中间人,就像翻译官一样,我会两国语言,你们说话都经过我来就行了,这个适配器实现了你说期望的接口,而且这个类也能和厂商的接口沟通。

总而言之,我们经常可以看到适配器出现在我们的代码中,如在Android便充分利用了适配器来实现view和数据的联系,如:ListView和BaseAdapter。
我们举一下一个小例子来说明一下适配器模式。
就拿我们首页的图来看,
我们国家的标准电压是220v,而我们笔记本所需的电压就15v左右;所以肯定不可以把我们的交流电直接接到笔记本上,这时,我们得有一个变压器(电源适配器)就可以了,把220v电压转换成15v;

下面介绍一下代码:

笔记本类

/**
 * 
 * 笔记本
 * @author studyjun
 *
 */
public class Jotter {
     
    private VoltageAdapter adapter;
     
    public VoltageAdapter getAdapter() {
        return adapter;
    }
 
    public void inputVoltage(){
        System.out.println("笔记本得到输入电压" +adapter.transformVoltage()+"v");
    }
     
    public void setAdapter(VoltageAdapter adapter){
        this.adapter =adapter;
    }
}

供电器220v,提供220v的电压

/**
 * 
 * 供电器
 * @author studyjun
 *
 */
public class PowerSupplyDevice {
 
    //标准电压
    private int standardVoltage =220;
     
     
    /**
     * 输出220v电压
     * @return
     */
    public int powerSupply(){
        System.out.println("标准电压提供220v");
        return standardVoltage;
    }
}

适配器接口,有个电压转换接口

/**
 * 
 * 电源适配器
 * @author studyjun
 *
 */
public interface VoltageAdapter {
     
    /**
     * 转换电压
     */
    public int transformVoltage();
}

笔记本电源适配器类,把220v转为笔记本的15v的电压

/**
 * 
 * 电源适配器
 * @author studyjun
 *
 */
public class MyVoltageAdapter implements VoltageAdapter{
     
    private int voltage; //电压
    /**
     *  标准电压设备220v
     */
    private PowerSupplyDevice powerSupplyDevice ;
     
     
    public MyVoltageAdapter(PowerSupplyDevice powerSupplyDevice) {
        this.powerSupplyDevice = powerSupplyDevice;
    }
 
 
 
    public int getVoltage() {
        return voltage;
    }
 
 
 
    public void setVoltage(int voltage) {
        this.voltage = voltage;
    }
     
    public PowerSupplyDevice getPowerSupplyDevice() {
        return powerSupplyDevice;
    }
 
 
 
    public void setPowerSupplyDevice(PowerSupplyDevice powerSupplyDevice) {
        this.powerSupplyDevice = powerSupplyDevice;
    }
 
 
    /**
     * 转换电压
     */
    public int transformVoltage(){
        int voltage = powerSupplyDevice.powerSupply();
        int lowerVoltage = voltage/14;
        System.out.println("转化中电压为="+lowerVoltage+"v");
        return lowerVoltage;
         
    }
}

测试

public class Test {
     
    public static void main(String[] args) {
         
        Jotter jt = new Jotter();
        PowerSupplyDevice powerSupplyDevice = new PowerSupplyDevice();
        VoltageAdapter adapter=new MyVoltageAdapter(powerSupplyDevice);
        jt.setAdapter(adapter);
        jt.inputVoltage();
    }
     
}

执行结果

讲到这里,我们总结一下适配器模式的优点和缺点:
优点:
1、可以将两个不同的接口联系起来,耦合性低。
2、增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性
3、灵活性和扩展性都非常好,符合开闭原则

类适配器的缺点:
1、对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。
对象适配器还有的优点:
2、与类适配器模式相比,要想置换适配者类的方法就不容易。

源代码下载:DesignPattern

时间: 2024-10-14 19:40:55

Android设计模式--适配器模式--Adapter入门的相关文章

设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 详解

适配器模式(adapter pattern) 枚举器和迭代器 详解 本文地址: http://blog.csdn.net/caroline_wendy 参考适配器模式(adapter pattern): http://blog.csdn.net/caroline_wendy/article/category/2281679 Java早期版本的枚举器(Enumeration)和现在的迭代器(Iterator) 可以使用适配器(adapter)进行转换. 适配器(adapter)代码: /** *

设计模式 - 适配器模式(adapter pattern) 枚举器和迭代器 具体解释

适配器模式(adapter pattern) 枚举器和迭代器 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考适配器模式(adapter pattern): http://blog.csdn.net/caroline_wendy/article/category/2281679 Java早期版本号的枚举器(Enumeration)和如今的迭代器(Iterator) 能够使用适配器(adapter)进行转换. 适配器(adapter)代码: /**

java/android 设计模式学习笔记(6)---适配器模式

这篇来介绍一下适配器模式(Adapter Pattern),适配器模式在开发中使用的频率也是很高的,像 ListView 和 RecyclerView 的 Adapter 等都是使用的适配器模式.在我们的实际生活中也有很多类似于适配器的例子,比如香港的插座和大陆的插座就是两种格式的,为了能够成功适配,一般会在中间加上一个电源适配器,形如: 这样就能够将原来不符合的现有系统和目标系统通过适配器成功连接. 说到底,适配器模式是将原来不兼容的两个类融合在一起,它有点类似于粘合剂,将不同的东西通过一种转

设计模式之适配器模式(Adapter Pattern)

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 1. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 模式中的角色 2.1 目标接口(Target):客户所期待的接口.目标可以是具体的或抽象的类,也可以是接口. 2.2 需要适配的类(Adaptee):需要适配的类或适配者类. 2.3 适配器(Adapter):通过包装一个需要适配的对象,把

研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)

一.适配器模式定义 将一个类的接口转换成另外一个接口,适配器模式使得原本由于接口不兼容,而不能在一起工作的哪些类能够在一起工作. 二.python 实现 1 import string 2 import cPickle as p 3 import datetime 4 import os 5 class LogModel: 6 logId="" 7 operateUser="" 8 operateTime="" 9 logContent=&quo

Java设计模式之适配器模式(Adapter Pattern)

Adapter Pattern的作用是在不改变功能的前提下转换接口.Adapter分为两类,一类是Object Adapter, 另一类是Class Adapter.由于Class Adapter的实现需要用到多继承,而Java不支持多继承,所以这里只关注Object Adapter. 在JDK1.5之前是没有 java.util.Iterator 接口的,java.util.Enumeration 接口起着 Iterator 的作用.那么如果我们需要维护一些年代比较久远的代码,可能就会面临着没

设计模式——适配器模式(Adapter)

基本概念 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 在GoF的设计模式中,对适配器模式讲了两种类型,类适配器模式和对象适配器模式.适配器模式还有一个特例,就是缺省适配模式(Default Adapter),又称接口适配模式. 1. 类适配器模式 把适配类的API转换成目标类的API, 由于类适配器模式通过多重继承对一个接口与另一个接口进行匹配,虽然C#.java等 语言都不支持多重继承,但是也可以简单的使用类    

如何让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)

如何让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 概念相关 定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作. 简单点说: 两个彼此间没有太大关联的类,想进行交互完成某些事情,如果 直接去修改各自的接口,就显得有些繁琐了,可以加个中间类, 用它来协调两类之间的关系,完成相关业务.这种玩法就叫适配器模式! 两种适配器模式: 根据适配器类与适配者类的关系不同,适配器模式可分为 类适配器 和 对

设计模式之适配器模式(Adapter)摘录

23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象.创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些具体的类的信息封装起来.第二,它们隐藏了这些类的实例是如何被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以