您的位置 首页 java

Java,设计模式,结构型,适配器模式,又名包装器,三种方式

适配器模式(Adapter Pattern):

将一个类的接口适配成用户所期待的接口,又称为包装器(Wrapper)。

将一个类的接口转换成客户端期望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作,主要目的是兼容性,让原本因接口不匹配不能一起工作的俩个类可以协同工作;

一句话总结:适配成用户所期待的接口。

适配器模式分为三类:

类适配器模式、对象适配器模式和接口适配器模式;

适配器模式的角色:

目标接口(Target)、适配者(Adaptee)类和适配器( Adapter )类;

代码案例:

案例:手机充电,需将200V的电转化成5V,使用适配器模式实现~

实现方式1,类图:

实现方式1,代码:

 /**
 * 目标接口(Target)
 */public interface IElectric5Voltage {

/**
 * 需要5伏电
 * @return
 */public int get5Voltage();

}  
 /**
 * 适配者(Adaptee)
 */public class Electric220Voltage {

/**
 * 220伏电
 * @return
 */public int getVoltage() {
return 220;
}

}  
 /**
 * 适配器(Adapter)类
 */public class Electric5VoltageImpl extends Electric220Voltage implements IElectric5Voltage {

@ Override 
public int get5Voltage() {
int v220 = super.getVoltage();
return v220/44;
}

}  
 public class Client {

public static void main(String[] args) {
/**
 * 类适配器
 */IElectric5Voltage electric5Voltage = new Electric5VoltageImpl();
System.out.println("电压为:" + electric5Voltage.get5Voltage() + "伏");
}

}  

实现方式2,类图:

实现方式2,类图:

 /**
 * 目标接口(Target)
 */public interface IElectric5Voltage {

/**
 * 需要5伏电
 * @return
 */public int get5Voltage();

}  
 /**
 * 适配者(Adaptee)
 */public class Electric220Voltage {

/**
 * 220伏电
 * @return
 */public int getVoltage() {
return 220;
}

}  
 /**
 * 适配器(Adapter)类
 */public class Electric5VoltageImpl implements IElectric5Voltage {

Electric220Voltage electric220Voltage = new Electric220Voltage();

@Override
public int get5Voltage() {
int v220 = electric220Voltage.getVoltage();
return v220 / 44;
}

}  
 public class Client {

public static void main(String[] args) {
/**
 * 对象类适配器
 */IElectric5Voltage electric5Voltage = new Electric5VoltageImpl();
System.out.println("电压为:" + electric5Voltage.get5Voltage() + "伏");
}

}  

基于接口的适配器模式:

 /**
 * 目标接口
 */public interface AdapterInterface {

public String a(String a);

public String b(String b);

public String c(String c);

}  
 /**
 * 适配者
 */public class UserInterface {

public void print(AdapterInterface adapterInterface,String a) {
System.out.println(adapterInterface.a(a));
}

}  
 /**
 * 适配器
 */public class EmptyAdapterInterface implements AdapterInterface {

@Override
public String a(String a) {
return "";
}

@Override
public String b(String b) {
return "";
}

@Override
public String c(String c) {
return "";
}

}  
 public class Client {

public static void main(String[] args) {
/**
 * 接口类适配器
 */UserInterface userInterface = new UserInterface();
userInterface.print(new EmptyAdapterInterface() {

public String a(String a) {
return "适配器类:" + a;
}

}, "你好!");
}

}  

文章来源:智云一二三科技

文章标题:Java,设计模式,结构型,适配器模式,又名包装器,三种方式

文章地址:https://www.zhihuclub.com/197682.shtml

关于作者: 智云科技

热门文章

网站地图