栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java设计模式之适配器模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java设计模式之适配器模式

结构型模式

1、结构型模式是Java设计模式中管理类和对象关系的一种设计模式。

2、可以分为类结构模式和对象结构模式

3、类结构模式关心类的组合,类结构模式中一般只存在继承关系和实现关系

4、对象结构模式关心类和对象的组合,通过关联关系在一个类中定义另一个类的实例对象,然后调用该对象相应的方法

适配器模式

定义:将一个类的接口转换成客户希望的另一个接口。

注:适配器模式可以理解为在原有类的基础上套了一层壳,用户访问这个壳中名称相同的接口,即可进行访问。

适配器模式主要包含三个模块:

Target(目标类):做为适配器模式中的目标接口(可以是`        抽象类也可以是接口)

Adapter (适配器类):主要用来包装适配者类,提供与目标类相同的接口

Adaptee(适配者类):被适配器包装的类,存在一个已有的接口,包含了客户希望使用的业务方法

 下面用手机电源适配器模拟适配器模式示例如下:

public class AdapterMode {
    public static void main(String[] args) {

        PowerSupply powerSupply = new PowerSupply();
        powerSupply.charge();

        C_PowerSupply c_powerSupply = new C_PowerSupply();
        c_powerSupply.charge();
    }

}


interface V220
{
    void charge();
}

class PowerSupply implements V220
{
    private V20 v20;

    public PowerSupply()
    {
        v20 = new V20();
    }

    public void charge() {
        v20.charge20to200();
    }
}

class V20
{
    public void charge20to200()
    {
        System.out.println("this is 20V to 220V Voltage");
    }
}


interface  C_V220
{
    void charge();
}

class C_PowerSupply extends C_V20 implements C_V220
{

    public void charge() {
        super.charge20to200();
    }
}

class C_V20
{
    public void charge20to200()
    {
        System.out.println("this is 20V to 220V Voltage");
    }
}

说明:

本案例采用220V电压插座充电为例,V220代表插座的统一接口,PowerSupply代表手机电源适配器,内部实现了220V接口的充电方法,并调用手机20V的电压转换过程,V20内部是实现手机电压转换的过程。

 缺省适配器模式

当不需要实现一个接口提供的所有方法时,可先设计一个抽象类实现该接口,并为接口中的每一个方法提供一个空方法,那么该抽象类的子类可以选择性的覆盖父类的方法来进行实现需求。

代码结构如下 :

public class DefaultAdapter {
    public static void main(String[] args) {
        Concrete concrete = new Concrete();
        concrete.method1();
    }
}

interface A{

    void method1();
    void method2();
    void method3();
}

 abstract class AbstarctAdapter implements A
{
    public void method1() {}

    public void method2() {}

    public void method3() {}
}

class Concrete extends AbstarctAdapter
{
    @Override
    public void method1() {
        System.out.println("具体的子类实现");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/874252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号