欢迎访问宙启技术站
智能推送

Java设计模式以虹猫蓝兔的故事讲解适配器模式

发布时间:2023-05-14 07:11:09

适配器模式是一种结构性设计模式,通常用于连接两个不兼容的接口或类。它可以将一个类的接口转换成另一个类的接口,以便它们可以协同工作。在本文中,我们将以虹猫蓝兔的故事为例,形象地讲解适配器模式。

故事的主人公是虹猫和蓝兔,他们是一对好朋友。有一天,虹猫和蓝兔想一起去钓鱼,但他们发现自己的鱼竿不兼容,虹猫的鱼竿太长,而蓝兔的鱼竿太短。他们需要一个适配器,将两个不兼容的鱼竿接口转换成一个兼容的接口,以便他们可以一起愉快地钓鱼。

接下来,我们将使用适配器模式来解决这个问题。首先,我们定义两个不兼容的鱼竿接口,分别是虹猫的鱼竿和蓝兔的鱼竿:

public interface HongmaoFishRod {
    void throwHook();
    void pullHook();
    void fishing();
}

public interface LantuFishRod {
    void cast();
    void pullBack();
    void waitFish();
}

为了将这两个接口兼容起来,我们需要创建一个适配器。适配器实现了目标接口,同时包含一个需要适配的对象。在这个例子中,我们创建了一个叫做“FishRodAdapter”的适配器,用来将虹猫和蓝兔的鱼竿接口转换成一个兼容的接口:

public class FishRodAdapter implements HongmaoFishRod {
    private LantuFishRod lantuFishRod;

    public FishRodAdapter(LantuFishRod lantuFishRod) {
        this.lantuFishRod = lantuFishRod;
    }

    public void throwHook() {
        lantuFishRod.cast();
    }

    public void pullHook() {
        lantuFishRod.pullBack();
    }

    public void fishing() {
        lantuFishRod.waitFish();
    }
}

如上所述,FishRodAdapter实现了HongmaoFishRod接口,并将LantuFishRod作为构造函数的参数传递进来。同时,它实现了HongmaoFishRod接口的方法,将LantuFishRod的方法映射到HongmaoFishRod的方法中。

现在,虹猫和蓝兔可以使用这个适配器,将两个不兼容的鱼竿接口转换成一个兼容的接口。他们只需要将自己的鱼竿放入适配器中即可:

HongmaoFishRod hongmaoFishRod = new FishRodAdapter(new LantuFishRodImpl());
LantuFishRod lantuFishRod = new LantuFishRodImpl();

可以看到,虹猫和蓝兔的鱼竿接口已经被转换成了兼容的接口,他们可以愉快地钓鱼了。适配器模式的作用就是将不兼容的接口转换成兼容的接口,使得不同的对象能够协同工作。

适配器模式是一种简单而强大的模式,在实际开发中经常使用。它可以帮助我们解决不同类之间的接口不兼容的问题,同时还可以帮助我们重用现有代码,使得代码设计更加灵活和可扩展。