首页 > 其他分享 >适配器模式

适配器模式

时间:2022-12-12 16:32:13浏览次数:45  
标签:plug 适配器 GBTwoPlug public 模式 ThreePlugIf void


适配器模式

定义:适配器模式将一个类的接口,转化成客户期望的另一个接口。使得原本由于接口不兼容

而不能一起工作的那些类可以在一起工作。

适配器分类

1组合

采用组合方式的适配器称为对象适配器

特点:把“被适配者”作为一个对象组合到适配器类中,以修改目标接口包装被支配者。

2继承

采用继承方式的称为类适配器

特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配。

作用

1、透明

通过适配器,客户端可以调用同一个接口,因而对客户端来说是透明的。这样做更加简单、

更直接、更紧凑

2、重用

复用了现存的类,解决了现存类和复用环境要求不一致的问题。

3、低耦合

将目标类和适配类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有代码(遵循开闭原则)

案例:

笔记本电脑使用三相电流,插座为二相供电。

/**
* 三相插座接口
*/
public interface ThreePlugIf {
//使用三相交流电供电
void powerWithThree();
}
/**
* 二相插座
*/
public class GBTwoPlug {
//使用二相电流供电
public void powerWithTwo(){
System.out.println("使用二相电流供电");
}
}
/**
* 三相转二相的插座适配器
*/
public class TwoPlugAdapter implements ThreePlugIf{
private GBTwoPlug plug;
public TwoPlugAdapter(GBTwoPlug plug){
this.plug=plug;
}
@Override
public void powerWithThree() {
System.out.println("将三相转化为二相");
plug.powerWithTwo();
}
}
/**
* 使用继承方式的适配器
*/
public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf{
@Override
public void powerWithThree() {
System.out.println("使用继承的方式");
this.powerWithTwo();
}
}
public class NoteBook {
private ThreePlugIf plug;
public NoteBook(ThreePlugIf plug){
this.plug=plug;
}
//使用插座充电
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args){
GBTwoPlug two=new GBTwoPlug();
ThreePlugIf three=new TwoPlugAdapter(two);
NoteBook nb=new NoteBook(three);
nb.charge();

//使用继承的方式
three=new TwoPlugAdapterExtends();
nb=new NoteBook(three);
nb.charge();
}
}

将三相转化为二相


使用二相电流供电


使用继承的方式


使用二相电流供电



标签:plug,适配器,GBTwoPlug,public,模式,ThreePlugIf,void
From: https://blog.51cto.com/u_12026373/5930813

相关文章