设计模式笔记1——适配器Adapter模式

1.根据意图对模式分类

 

2.接口型模式介绍 
2.1. 抽象类与接口的区别

一个类能实现多个接口,但只能继承一个抽象类

抽象类可以包含具体方法,但是接口只能都是抽象方法

抽象类可以声明和使用字段,接口不能,但可以创建静态的final常量

抽象类可以定义构造函数,但是接口不能

抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

......

3. 适配器模式

适配以模式的意图在于:使用不同的接口的类所提供的服务为客户端提供它期望的服务。适配器模式将一个类的接口转换成客户期望的另一个接口。使得原本由于接口不兼容而不能一起工作的类可以在一起工作。



3.1例子

/**
	客户端,一个电脑需要用三芯插座充电
*/
public class Computer {
	//三芯插座
	private ThreePlugIf  plug;	
	public Computer(ThreePlugIf plug){
		this.plug = plug;
	}
	//充电,需要用到的是三芯插座。
	public void charge(){
		plug.powerWithThree();
	}	
	public static void main(String[] args) {
		//只有两芯插座
		GBTwoPlug two =  new GBTwoPlug();
		ThreePlugIf three = new TwoPlugAdapter(two);
		Computer c = new Computer(three);
		c.charge();
				
		three = new TwoPlugAdapterExtends();
		c = new Computer(three);
		c.charge();
	}
}

/*
 * 三芯插座:目标接口
 */
public interface ThreePlugIf {
	public void powerWithThree();
}


public class GBTwoPlug {
	
	//两芯插座:被适配器类
	public void powerWithTwo(){
		System.out.println("用两芯插座供电");
	}
}

采用组合方式的适配器成为对象适配器

特点:把被适配者作为一个对象组合到适配器类中,以修改目标接口包装被适配者。

/*
 * 适配器,两芯插座;
 */
public class TwoPlugAdapter implements ThreePlugIf {

	private GBTwoPlug plug;
	
	public TwoPlugAdapter(GBTwoPlug plug){
		this.plug = plug;
	}
	@Override
	public void powerWithThree() {
		System.out.println("转换成三芯插座");
		plug.powerWithTwo();

	}
}

采用继承方式的适配器成为类适配器

特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类实现适配

/*
 * 继承
 */
public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugIf {

	@Override
	public void powerWithThree() {
		System.out.print("继承转化");
		this.powerWithTwo();

	}

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Amelie11

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

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

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

打赏作者

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

抵扣说明:

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

余额充值