适配器模式

适配器:
	用于转换,使原来不兼容的接口可以兼容
1.定义普通接口,包含通用的方法
2.定义用于实现特殊方法的接口,可以有多个特殊方法
3.定义具体类仅具体实现特定的特殊方法,其余的特殊方法仅仅是重写为空
4.定义适配器类继承普通接口,内部包含特殊接口作为成员变量,
	并重写接口方法,实际上仅使用特殊方法
5.定义完整类继承普通接口,内部包含适配器作为成员变量,
	并为重写接口方法,普通方法在其中做完善
6.客户端使用完整类进行所有方法的调用


1.定义普通接口,包含通用的方法
	public interface OrdinaryMediaPlayer {
		public abstract void play(String format);
	}
2.定义用于实现特殊方法的接口,可以有多个特殊方法
	public interface AdvancedMediaPlayer {
		public abstract void playMP4();
		public abstract void playPPt();
	}
3.定义具体类仅具体实现特定的特殊方法,其余的特殊方法仅仅是重写为空
	class MP4Player implements AdvancedMediaPlayer{
		@Override
		public void playMP4() {
			System.out.println("MP4 is supported");
		}
		@Override
		public void playPPt() {}
	}
	
	class PPTPlayer implements AdvancedMediaPlayer{
		@Override
		public void playMP4() {}
		@Override
		public void playPPt() {
			System.out.println("PPT is supported");
		}
	}
		
4.定义适配器类继承普通接口,内部包含特殊接口作为成员变量,
	并重写接口方法,实际上使用的却是特殊方法
	class MediaAdapter implements OrdinaryMediaPlayer{
		private AdvancedMediaPlayer advancedMediaPlayer ;
		@Override
		public void play(String format) {
			if(format.equalsIgnoreCase("MP4")) {
				advancedMediaPlayer = new MP4Player();
				advancedMediaPlayer.playMP4();
			}
			else {
				advancedMediaPlayer = new PPTPlayer();
				advancedMediaPlayer.playPPt();
			}	
		}
	}
	
5.定义完整类继承普通接口,内部包含适配器作为成员变量,
	并为重写接口方法,普通方法在其中做完善
	class AutoPlayer implements OrdinaryMediaPlayer{
		private MediaAdapter mediaAdapter;
		@Override
		public void play(String format) {
			if(format.equalsIgnoreCase("mp3"))
				System.out.println("mp3 is supported");
			else if(format.equalsIgnoreCase("MP4") 
			|| format.equalsIgnoreCase("PPT")){
				mediaAdapter = new MediaAdapter();
				mediaAdapter.play(format);
			}
			else {
				System.out.println("invaid format");
			}
		}
	}
6.客户端使用完整类进行所有方法的调用
	public static void main(String[] args) {
		AutoPlayer autoPlayer = new AutoPlayer();
		autoPlayer.play("mp3");
		autoPlayer.play("Mp4");
		autoPlayer.play("ppt");
		autoPlayer.play("vdat");
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值