1、适配器模式的定义
适配器就是一种适配中间件,用于连接不匹配的二者,实物可以对照转接头。
2、适配器模式的分类
1)类适配器:通过继承来实现适配器功能。
//懒,就写一起了
public class MainTest {
//测试方法
public static void main(String[] args) {
Adapter adapter = new Adapter();
adapter.useRMB();
}
//适配器
public static class Adapter extends YouXiBi implements IRMB{
@Override
public void useRMB() {
//RMB没办法直接买装备,转换成游戏币再购买
useYouXiBi();
}
}
//RMB接口
private interface IRMB{
void useRMB();
}
//游戏币接口
private interface IYouXiBi{
void useYouXiBi();
}
//游戏币使用
public static class YouXiBi implements IYouXiBi{
@Override
public void useYouXiBi() {
System.out.println("我使用100游戏币买了一件装备");
}
}
}
2)对象适配器:通过组合来实现适配器功能。(可以看作类适配器)
//懒,就写一起了
public class MainTest {
//测试方法
public static void main(String[] args) {
IYouXiBi iYouXiBi = new YouXiBi();
Adapter adapter = new Adapter(iYouXiBi);
adapter.useRMB();
}
//适配器
public static class Adapter extends YouXiBi implements IRMB{
IYouXiBi iYouXiBi;
Adapter(IYouXiBi iYouXiBi){
this.iYouXiBi = iYouXiBi;
}
@Override
public void useRMB() {
//RMB没办法直接买装备,转换成游戏币再购买
iYouXiBi.useYouXiBi();
}
}
//RMB接口
private interface IRMB{
void useRMB();
}
//游戏币接口
private interface IYouXiBi{
void useYouXiBi();
}
//游戏币使用
public static class YouXiBi implements IYouXiBi{
@Override
public void useYouXiBi() {
System.out.println("我使用100游戏币买了一件装备");
}
}
}
3)接口适配器:通过抽象类来实现适配器功能。
使用场景:想要使用接口中的某些方法,但是不想实现全部的方法,可以使用抽象类来实现接口(这个抽象类就是适配器),仅对方法进行置空,然后我们再继承这个抽象类来通过重写想用的方法的方式来实现。
//懒,就写一起了
public class MainTest {
//测试方法
public static void main(String[] args) {
IYouXiBi iYouXiBi = new YouXiBi();
iYouXiBi.useYouXiBi1();
}
//使用YouXiBi
public static class YouXiBi extends Adapter{
//游戏币买头盔
public void useYouXiBi1(){
System.out.println("游戏币买头盔");
}
}
//游戏币接口
private interface IYouXiBi{
//游戏币买头盔
public void useYouXiBi1();
//游戏币买腰带
public void useYouXiBi2();
//游戏币买上衣
public void useYouXiBi3();
//游戏币买内裤
public void useYouXiBi4();
}
//适配器
public static abstract class Adapter implements IYouXiBi{
//游戏币买头盔
public void useYouXiBi1(){}
//游戏币买腰带
public void useYouXiBi2(){}
//游戏币买上衣
public void useYouXiBi3(){}
//游戏币买内裤
public void useYouXiBi4(){}
}
}
网友评论