适配器模式

适配器模式

分享一个例子:笔记本通过读卡去读取TF卡;

一、先模拟计算机读取SD卡:

1、先创建一个SD卡的接口:

public interface SDCard {

//读取SD卡方法

String readSD();

//写入SD卡功能

int writeSD(String msg);

}

2、创建SD卡接口的实现类,模拟SD卡的功能:

public class SDCardImpl implements SDCard {

@Override

public String readSD() {

String msg = "sdcard read a msg :hello word SD";

return msg;

}

@Override

public int writeSD(String msg) {

System.out.println("sd card write msg : " + msg);

return 1;

}

}

3、创建计算机接口,计算机提供读取SD卡方法:

public interface Computer {

String readSD(SDCard sdCard);

}

4、创建一个计算机实例,实现计算机接口,并实现其读取SD卡方法:

public class ThinkpadComputer implements Computer {

@Override

public String readSD(SDCard sdCard) {

if(sdCard == null)throw new NullPointerException("sd card null");

return sdCard.readSD();

}

}

5、这时候就可以模拟计算机读取SD卡功能:

public class ComputerReadDemo {

public static void main(String[] args) {

Computer computer = new ThinkpadComputer();

SDCard sdCard = new SDCardImpl();

System.out.println(computer.readSD(sdCard));

}

}

二、接下来在不改变计算机读取SD卡接口的情况下,通过适配器模式读取TF卡:

1、创建TF卡接口:

public interface TFCard {

String readTF();

int writeTF(String msg);

}

2、创建TF卡实例:

public class TFCardImpl implements TFCard {

@Override

public String readTF() {

String msg ="tf card reade msg : hello word tf card";

return msg;

}

@Override

public int writeTF(String msg) {

System.out.println("tf card write a msg : " + msg);

return 1;

}

}

3、创建SD适配TF (也可以说是SD兼容TF,相当于读卡器):

实现SDCard接口,并将要适配的对象作为适配器的属性引入。

public class SDAdapterTF implements SDCard {

private TFCard tfCard;

public SDAdapterTF(TFCard tfCard) {

this.tfCard = tfCard;

}

@Override

public String readSD() {

System.out.println("adapter read tf card ");

return tfCard.readTF();

}

@Override

public int writeSD(String msg) {

System.out.println("adapter write tf card");

return tfCard.writeTF(msg);

}

}

4、通过上面的例子测试计算机通过SD读卡器读取TF卡:

public class ComputerReadDemo {

public static void main(String[] args) {

Computer computer = new ThinkpadComputer();

SDCard sdCard = new SDCardImpl();

System.out.println(computer.readSD(sdCard));

System.out.println("====================================");

TFCard tfCard = new TFCardImpl();

SDCard tfCardAdapterSD = new SDAdapterTF(tfCard);

System.out.println(computer.readSD(tfCardAdapterSD));

}

}

输出:

sdcard read a msg :hello word SD

====================================

adapter read tf card

tf card reade msg : hello word tf card

在这种模式下,计算机并不需要知道具体是什么卡,只需要负责操作接口即可,具体操作的什么类,由适配器决定。

comi comi

153***856@qq.com

6年前 (2019-04-29)

相关推荐

韓國自由行8個APP推薦:地圖用NAVER Map和韓巢 翻譯有Papago
365bet体坛即时比分

韓國自由行8個APP推薦:地圖用NAVER Map和韓巢 翻譯有Papago

📅 08-03 👁️ 5889
图说汉服之:襦袄
365bet官网开户

图说汉服之:襦袄

📅 07-05 👁️ 863
手出油是什么原因?手出油怎么办?
365bet官网开户

手出油是什么原因?手出油怎么办?

📅 07-28 👁️ 7203
“蔷”字是什么意思?正确读音、注音及书写笔顺详解
塑料需要多长时间才能完全分解?有的远超人类寿命
android视频播放器排行榜,安卓视频播放器哪个好 五款主流视频播放器对比