一、什么是适配器?
- 在使用监听器的时候, 需要定义一个类事件监听器接口.
- 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
- 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.
二、适配器原理
- 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
- 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
- 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.
三、适配器设计模式举例
需求:和尚分为好和尚(唐僧)和花和尚(鲁智深)
和尚的功能有:打坐、念经、撞钟、习武
唐僧:打坐、念经、撞钟
鲁智深:习武
package com.soar.adapter;
public class Demo1_Adapter {
/*
* 适配器设计模式
* 鲁智深(花和尚)
* 唐僧(好和尚)
*/
public static void main(String[] args) {
}
}
interface heshang {
public void dazuo(); //打坐
public void nianjing(); //念经
public void zhuangzhong(); //撞钟
public void xiwu(); //习武
}
//声明成抽象的原因是不想让其他类创建本类对象,因为创建也没有意义,方法都是空的
abstract class huaheshang implements heshang{
@Override
public void dazuo() {
}
@Override
public void nianjing() {
}
@Override
public void zhuangzhong() {
}
@Override
public void xiwu() {
}
}
class luzhishen extends huaheshang{
public void xiwu(){
System.out.println("倒拔垂杨柳");
System.out.println("拳打镇关西");
System.out.println("大闹野猪林");
}
}
class tangseng extends huaheshang{
@Override
public void dazuo() {
System.out.println("唐僧在打坐");
}
@Override
public void nianjing() {
System.out.println("唐僧在念经");
}
@Override
public void zhuangzhong() {
System.out.println("唐僧在撞钟");
}
}