0
点赞
收藏
分享

微信扫一扫

Java设计模式--适配器模式--使用/详解/实例

玉新行者 2022-02-15 阅读 39


简介

说明

        本文用示例介绍Java的建造者模式的用法。

生活实例

 电脑没有网线接口,或者网线接口坏了。此时,可以用一个转接器,将网线转为USB。

Java设计模式--适配器模式--使用/详解/实例_网线

代码(初版)

所有的类

Java设计模式--适配器模式--使用/详解/实例_设计模式_02

被适配的类

本处是网线。有一个请求方法:连接网线上网。

package org.example.adaptor;

public class Cable {
public void request() {
System.out.println("通过网线上网");
}
}

适配器类

接口

package org.example.adaptor;

public interface Adapter {
public void handleRequest();
}

实现类

package org.example.adaptor;

public class CableToUSB extends Cable implements Adapter{
@Override
public void handleRequest() {
super.request();
}
}

客户端类

本处是电脑。想上网,却不能直接插网线。

要是能插网线,直接这样即可:

package org.example.adaptor;

public class Computer {
public static void surfTheInternet(Cable cable) {
cable.request();
}

public static void main(String[] args) {
Cable cable = new Cable();
surfTheInternet(cable);
}
}

不能插网线,所以,我们要插上适配器 

package org.example.adaptor;

public class Computer {
public static void surfTheInternet(Adapter adapter) {
adapter.handleRequest();
}

public static void main(String[] args) {
Adapter adapter = new CableToUSB();
surfTheInternet(adapter);
}
}

测试

执行结果

通过网线上网

代码(优化版)

优化后的所有的类

Java设计模式--适配器模式--使用/详解/实例_网线_03

上边的适配器用了继承的方法,而java只能继承一个对象,也就是说,它只能适配网线。此时若有多个要适配的东西,那不完蛋了?

将被适配的类抽象

接口

package org.example.adaptor;

public interface Adaptee {
public void request();
}

实现类

package org.example.adaptor;

public class Cable implements Adaptee{
public void request() {
System.out.println("通过网线上网");
}
}

适配器组合而不是继承

package org.example.adaptor;

public class CableToUSB implements Adapter{

private Adaptee adaptee;

public CableToUSB(Adaptee adaptee) {
this.adaptee = adaptee;
}

@Override
public void handleRequest() {
adaptee.request();
}
}

测试

package org.example.adaptor;

public class Computer {
public static void surfTheInternet(Adapter adapter) {
adapter.handleRequest();
}

public static void main(String[] args) {
Adaptee adaptee = new Cable();
Adapter adapter = new CableToUSB(adaptee);
surfTheInternet(adapter);
}
}

执行结果

通过网线上网

 其他网址

​​【狂神说Java】通俗易懂的23种设计模式教学(停更)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​​


举报

相关推荐

0 条评论