当前位置: 移动技术网 > IT编程>软件设计>设计模式 > java设计模式5——适配器模式

java设计模式5——适配器模式

2020年03月09日  | 移动技术网IT编程  | 我要评论

java设计模式5——适配器模式

1、结构型模式介绍

1.1、作用

从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。

分类:

  • 适配器模式
  • 代理模式
  • 桥接模式
  • 装饰模式
  • 组合模式
  • 外观模式
  • 享元模式

    2、适配器模式介绍

    适配器模式(adapter pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

本节举例:(网线和笔记本电脑)

3、第一种建模方式:(使用继承,网线和转换器绑在一起)又称为类适配器

3.1、定义要适配的类(网线)

package com.xgp.company.结构性模式.第一种_适配器模式;

/**
 * 要被适配的类(网线)
 */
public class adaptee {
    public void request() {
        system.out.println("连接网线上网!");
    }
}

3.2、定义客户端类(电脑)

package com.xgp.company.结构性模式.第一种_适配器模式;

/**
 * 客户端类:想上网,插不上网线
 */
public class computer {

    //我们的电脑需要连接上转接器才能上网
    public void net(nettousb adapter) {
        //上网的具体实现,找一个转接头
        adapter.handlerequest();
    }

    public static void main(string[] args) {
        //电脑,适配器,网线
        computer computer = new computer();
        adapter adapter = new adapter();
//        adaptee adaptee = new adaptee();

        computer.net(adapter);

    }
}

此时,该电脑无法插入网线进行上网,因此需要适配

3.3、定义适配器的抽象实现

package com.xgp.company.结构性模式.第一种_适配器模式;

/**
 * 接口转换器的抽像实现
 */
public interface nettousb {
    //作用:处理请求(网 => usb)
    public void handlerequest();

}

3.4、定义具体的网线转换器

package com.xgp.company.结构性模式.第一种_适配器模式;
/**
 * 1、继承方式(类适配器)
 * 2、组合(对象适配器:常用)
 */

/**
 * 适配器:需要连接usb和网线
 */
public class adapter extends adaptee implements nettousb {

    @override
    public void handlerequest() {
        //可以上网了
        super.request();
    }
}

此时网线通过适配器插入了电脑,实现了上网的功能了

连接网线上网!

4、第二种建模方式:(使用组合,网线和转换器分离)又称为对象适配器

网线类和适配器的抽象类不变

4.1、适配器类的改进

package com.xgp.company.结构性模式.第二种_适配器模式;
/**
 * 1、继承方式(类适配器)
 * 2、组合(对象适配器:常用)
 */

/**
 * 适配器:需要连接usb和网线
 */
public class adapter implements nettousb {

    private adaptee adaptee;

    public adapter(adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @override
    public void handlerequest() {
        //可以上网了
        adaptee.request();
    }
}

4.2、电脑类的改进

package com.xgp.company.结构性模式.第二种_适配器模式;

/**
 * 客户端类:想上网,插不上网线
 */
public class computer {

    //我们的电脑需要连接上转接器才能上网
    public void net(nettousb adapter) {
        //上网的具体实现,找一个转接头
        adapter.handlerequest();
    }

    public static void main(string[] args) {
        //电脑,适配器,网线
        computer computer = new computer();
        adaptee adaptee = new adaptee();

        adapter adapter = new adapter(adaptee);


        computer.net(adapter);

    }
}

4.3、测试,电脑成功连上网线进行上网了

连接网线上网!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网