适配器模式1、结构型模式是Java设计模式中管理类和对象关系的一种设计模式。
2、可以分为类结构模式和对象结构模式
3、类结构模式关心类的组合,类结构模式中一般只存在继承关系和实现关系
4、对象结构模式关心类和对象的组合,通过关联关系在一个类中定义另一个类的实例对象,然后调用该对象相应的方法
定义:将一个类的接口转换成客户希望的另一个接口。
注:适配器模式可以理解为在原有类的基础上套了一层壳,用户访问这个壳中名称相同的接口,即可进行访问。
适配器模式主要包含三个模块:
Target(目标类):做为适配器模式中的目标接口(可以是` 抽象类也可以是接口)
Adapter (适配器类):主要用来包装适配者类,提供与目标类相同的接口
Adaptee(适配者类):被适配器包装的类,存在一个已有的接口,包含了客户希望使用的业务方法
下面用手机电源适配器模拟适配器模式示例如下:
public class AdapterMode {
public static void main(String[] args) {
PowerSupply powerSupply = new PowerSupply();
powerSupply.charge();
C_PowerSupply c_powerSupply = new C_PowerSupply();
c_powerSupply.charge();
}
}
interface V220
{
void charge();
}
class PowerSupply implements V220
{
private V20 v20;
public PowerSupply()
{
v20 = new V20();
}
public void charge() {
v20.charge20to200();
}
}
class V20
{
public void charge20to200()
{
System.out.println("this is 20V to 220V Voltage");
}
}
interface C_V220
{
void charge();
}
class C_PowerSupply extends C_V20 implements C_V220
{
public void charge() {
super.charge20to200();
}
}
class C_V20
{
public void charge20to200()
{
System.out.println("this is 20V to 220V Voltage");
}
}
说明:
缺省适配器模式本案例采用220V电压插座充电为例,V220代表插座的统一接口,PowerSupply代表手机电源适配器,内部实现了220V接口的充电方法,并调用手机20V的电压转换过程,V20内部是实现手机电压转换的过程。
当不需要实现一个接口提供的所有方法时,可先设计一个抽象类实现该接口,并为接口中的每一个方法提供一个空方法,那么该抽象类的子类可以选择性的覆盖父类的方法来进行实现需求。
代码结构如下 :
public class DefaultAdapter {
public static void main(String[] args) {
Concrete concrete = new Concrete();
concrete.method1();
}
}
interface A{
void method1();
void method2();
void method3();
}
abstract class AbstarctAdapter implements A
{
public void method1() {}
public void method2() {}
public void method3() {}
}
class Concrete extends AbstarctAdapter
{
@Override
public void method1() {
System.out.println("具体的子类实现");
}
}



