结构型模式的应用(一)适配器模式

使用Java语言实现一个双向适配器实例,使得猫(Cat)可以学狗(Dog)叫(Cry()),狗可以学猫抓老鼠(catchMouse())。要求绘制相应的类图并写出适配器(Adapter)类的代码

20软2

第一步,定义两个接口(既充当抽象目标有充当抽象适配者)
Cat:
public interface Cat 
{
   public void cry();
   public void catchMouse();
} 

Dog:
public interface Dog 
{
   public void wang();
   public void action();
}


第二步,定义两个具体适配者
ConcreteCat:
public class ConcreteCat implements Cat 
{
   public void cry() 
   {
	   System.out.println("喵喵喵~");
   }
   public void catchMouse() 
   {
	System.out.println("抓老鼠~");
   }
}

ConcreteDog:
public class ConcreteDog implements Dog 
{
   public void wang() 
   {
	   System.out.println("汪汪汪~");
   }
   public void action() 
   {
	   System.out.println("追小猫~");
   }
}

第三步,定义适配器
public class Adapter implements Cat, Dog 
{
   private Cat cat;
   private Dog dog;
   
   public void setCat(Cat cat) 
   {
    this.cat=cat;
   }
   
   public void setDog(Dog dog) 
   {
    this.dog=dog;
   }
   
   public void cry() //猫学狗叫
   {
	   System.out.print("小猫学小狗");
    dog.wang();
   }
   
   public void catchMouse() 
   {
    cat.catchMouse();
   }
   
   public void wang() 
   {
    dog.wang();
   }
 
   public void action() //狗学猫抓老鼠
   {
	   System.out.print("小狗学小猫");
    cat.catchMouse();
   }
}

第四步,定义测试类
import java.util.Scanner;
public class Client {
	public static void main(String[] args) {
		Adapter adapter=new Adapter();
		Cat cat=new ConcreteCat();
		Dog dog=new ConcreteDog();
		adapter.setCat(cat);
		adapter.setDog(dog);
		cat=(Cat) adapter;
		cat.cry();
		cat.catchMouse();
		dog=(Dog) adapter;
		dog.action();
		dog.wang();
	}}

测试结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃头小霸王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值