设计模式_Java_适配器设计模式

一、什么是适配器?

  • 在使用监听器的时候, 需要定义一个类事件监听器接口.
  • 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
  • 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.

二、适配器原理

  • 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
  • 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
  • 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.

三、适配器设计模式举例

需求:和尚分为好和尚(唐僧)和花和尚(鲁智深)
和尚的功能有:打坐、念经、撞钟、习武
唐僧:打坐、念经、撞钟
鲁智深:习武

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("唐僧在撞钟");
    }
}
posted @ 2017-09-04 08:55  Soar_Sir  阅读(131)  评论(0编辑  收藏  举报