Back to Posts

设计模式——适配器模式与大黄蜂

Posted in DesignPattern

适配器模式的使用场景,举个栗子就是,大黄蜂的声带坏了,每次都去找其他能发音的喇叭代替;虽然发出的声音有点怪,总归能发声了~

在Java中如何实现呢,比如现在有一声卡,只能发出女人的声音;而大黄蜂这个类,想带上这个声卡从而说话,如何实现?

  1. 将WomenSoundCard的speak()方法,抽象到SoundCard接口的speak中
  2. WomenSoundCard实现SoundCard接口
  3. BigBee的属性中,设置一个SoundCard的属性,并赋值为WomenSoundCard的类型,并且实现SoundCard接口,然后实现speak方法,在speak方法中,只需要调用SoundCard属性的speak方法即可;

实现以上三部,大黄蜂就能发出女人的声音了~

package com.git.poan.designparttern;


class WomenSoundCard implements SoundCard {
    @Override
    public void speak() {
        System.out.println("婴婴婴~");

    }
}

interface SoundCard {
    void speak();
}


public class BigBee implements SoundCard{

    private SoundCard soundCard = new WomenSoundCard();


    @Override
    public void speak() {
        soundCard.speak();
    }

    public static void main(String[] args) {
        BigBee bigBee = new BigBee();
        bigBee.speak();
    }
}


在实际项目中,如果一个类A想要调用与他没有任何关系的类B中方法,直接耦合B类,通过B类的实例调用不就行了;但是这样不能很直观的提现B类方法的适配,通过将B类的方法抽象并让AB类去实现,A类通过B类实例去调用来实现抽象方法,这样能让看代码的人一目了然,知道该方法是适配而来。 毕竟代码完成功能只是初衷,能让大家看懂就更好了~

你看那个人好像一条狗啊

Read Next

设计模式——Monad模式与参数校验