Java设计模式之适配器模式

本文通过实例详细介绍了适配器模式(Adapter Pattern),一种用于解决接口不兼容问题的设计模式。通过将火鸡的行为适配为鸭子的行为,展示了如何使得原本接口不兼容的类能够协同工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 适配器模式(Adapter Pattern)将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。


public class DuckTestDrive {
	public static void main(String[] args) {
		MallardDuck duck = new MallardDuck();//创建一只鸭子
 
		WildTurkey turkey = new WildTurkey();//创建一只火鸡
		Duck turkeyAdapter = new TurkeyAdapter(turkey);//然后将火鸡包装进一个火鸡适配器中,使它看起来像一只鸭子
   
		System.out.println("The Turkey says...");
		turkey.gobble();//测试伙计叫
		turkey.fly();//测试飞行
 
		System.out.println("\nThe Duck says...");
		testDuck(duck);
  
		System.out.println("\nThe TurkeyAdapter says...");
		testDuck(turkeyAdapter);//测试假装是鸭子的火鸡
	}
 
	static void testDuck(Duck duck) {
		duck.quack();
		duck.fly();
	}
}

public interface Duck {//鸭子的接口
	public void quack();
	public void fly();
}
public class MallardDuck implements Duck {//绿头鸭是鸭子的子类
	public void quack() {
		System.out.println("Quack");
	}
 
	public void fly() {
		System.out.println("I'm flying");
	}
}
public interface Turkey {//火鸡
	public void gobble();//火鸡的属性,与鸭子不同
	public void fly();
}
public void gobble() {//火鸡的实现
		System.out.println("Gobble gobble");
	}
	public void fly() {
		System.out.println("I'm flying a short distance");
	}
}
public class TurkeyAdapter implements Duck {//适配器
	Turkey turkey;
	public TurkeyAdapter(Turkey turkey) {//取得适配的对象引用
		this.turkey = turkey;
	}
	public void quack() {
		turkey.gobble();//调用火鸡的方法
	}
	public void fly() {
		for(int i=0; i < 5; i++) {
			turkey.fly();//调用火鸡的方法
		}
	}
}





参考资料《Head First设计模式》


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值