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();
可以看到,虹猫和蓝兔的鱼竿接口已经被转换成了兼容的接口,他们可以愉快地钓鱼了。适配器模式的作用就是将不兼容的接口转换成兼容的接口,使得不同的对象能够协同工作。
适配器模式是一种简单而强大的模式,在实际开发中经常使用。它可以帮助我们解决不同类之间的接口不兼容的问题,同时还可以帮助我们重用现有代码,使得代码设计更加灵活和可扩展。
