适配器(Adaptor)设计模式

1.1. 什么是适配器

生活中的适配器:

电源适配器:将原本不满足使用要求的220V交流电转换成符合使用要求的直流电;

调制解调器:将电信号和光信号之间相互转换;

适配器模式:

一种设计模式,解决的问题就是:

 将原来不符合使用要求的东西转换成符合使用要求的东西;

1.2. Java中的适配器

java中,根据转换对象的不同,可以将适配器分为三类:

类的适配;对象的适配;接口的适配;

需求:看下列程序,分别书写实现类满足User类的需求;

interface Inter{//接口
	public void method1();
	public void method2();
	public void method3();
	public void method4();
	public void method5();
}
class User{//用户类
	public static void test1(Inter i){
		i.method1();
		i.method2();
	}
	public static void test2(Inter i){
		i.method2();
	}
	public static void test3(Inter i){
		i.method4();
	}
}

适配器(Adaptor)设计模式_第1张图片

问题:因为多个实现类中只使用了接口中的某几个方法,但是不得不实现接口中所有方法,造成方法的大量浪费

解决思路:

可以专门使用一个类来实现接口,然后让其他类都来继承这个实现类,在其他的继承的类中就只需要重写需要的功能,不需要写多个无用的方法;

适配器(Adaptor)设计模式_第2张图片

使用适配器类对接口进行适配,具体的业务逻辑类(实现具体功能的类)就不需要直接和接口打交道,可以只关心具体的业务逻辑;

interface Inter{//接口
    public void method1();
    public void method2();
    public void method3();
    public void method4();
    public void method5();
}
class User{//用户类
    public static void test1(Inter i){
        i.method1();
        i.method2();
    }
    public static void test2(Inter i){
        i.method2();
    }
    public static void test3(Inter i){
        i.method4();
    }
}
/*
根据需求,需要写三个实现类,分别实现接口Inter,分别供User类的三个方法使用;
*/
//首先专门创建一个类,实现接口
//一般因为这个类,只是实现接口中的所有抽象函数,
//没有具体的有意义的功能,所以一般不允许创建这个类的对象;
//因为其他类还要继承它,又不想让它创建对象,所以需要声明为抽象类
abstract class Adaptor implements Inter{
    public void method1(){}
    public void method2(){}
    public void method3(){}
    public void method4(){}
    public void method5(){}
}
class InterImpl1  extends Adaptor{
    public void method1(){
        System.out.println("method1   实现1");
    }
    public void method2(){
        System.out.println("method2   实现1");
    }
}
class InterImpl2  extends Adaptor{
    public void method2(){
        System.out.println("method2   实现2");
    }
}
class InterImpl3  extends Adaptor{
    public void method4(){
        System.out.println("method4   实现3");
    }
}

1.3. 适配器小结

适配器的作用,就是适配、转换,将不符合使用要求的东西转换为符合使用要求的;

适配器设计模式,解决的是怎么将不符合使用要求的类、对象或接口转换为符合使用要求的;

根据适配的对象不同,可以将适配器分为类的适配、对象的适配和接口的适配;

接口的适配的步骤:

1、创建一个适配器类实现接口,在这个类中使用空实现实现接口中的所有抽象函数;

2、因为适配器类中的函数都是空实现的,创建该类的对象没有意义,所以要将适配器类定义为抽象类;

3、要使用适配器类,只需书写类继承适配器类即可;

转载于:https://my.oschina.net/cs520/blog/900200

你可能感兴趣的:(设计模式,java)