java适配器模式的简单理解

对于适配器模式,简单的一句话就是,它是一种将一个接口转成另一个接口的设计。

类图:


《Head First 设计模式》书中举的鸭子和火鸡的例子已经很好的介绍了(这书很好大家快去看),这里换一种说法来更简单的去理解,我也举一个简单的例子。

现在有两个接口,是胖子和瘦子:

        public interface Fatty{
		public void hitOtherPeople();//打人
		public void dodge();//走位
	}
	
	public interface Thin{
		public void beHit();//被打
		public void dodge();
	}

两个实现类,凯哥和我:

	public static class RongKai implements Fatty{

		@Override
		public void hitOtherPeople() {
			System.out.println("打别人");
		}

		@Override
		public void dodge() {
			System.out.println("走位风骚");
		}
		
	}
	
	public static class Me implements Thin{

		@Override
		public void beHit() {
			System.out.println("只能被打");
		}

		@Override
		public void dodge() {
			System.out.println("走位虚");
		}
		
	}
现在问题来了,现在要举办拳击比赛,需要一个胖子参赛,只能是胖子:

	public static void boxing(Fatty fatty){
		fatty.hitOtherPeople();
		fatty.dodge();
	}

但是凯哥现在去办别的大事去了,只有我个瘦子在,怎么办呢?打肿脸充胖子吧,把自己伪装成胖子去,这时候就需要一个适配器了:

	public static class ThinAdapter implements Fatty{
		private Thin thin;
		
		public ThinAdapter(Thin thin){
			this.thin = thin;
		}

		@Override
		public void hitOtherPeople() {
			thin.beHit();
		}

		@Override
		public void dodge() {
			thin.dodge();
		}
		
	}
注意这里的适配器实现了Fatty接口,也就是说它是一个Fatty,然后用了组合的方式,把一个Thin类型的对象传进来,具体的“打人”和“走位”就让thin对象来做了(可惜实际上只能被打)。

最后去参赛吧:

	public static void main(String[] args) {
		boxing(new ThinAdapter(new Me()));
	}

结果是:




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值