Java学习之路5--适配器模式

结构型模式

前几篇设计模式都是属于创建型设计模式,都是写如何创建一个所需的对象。而结构型模式是从程序结构上实现松耦合,扩大整体的类结构。

适配器模式

什么是适配器模式

好比如现实中的充电线,华为用的Type-C接口,而苹果用的是苹果接口,要使苹果手机能用华为充电线的Type-C接口,必须在苹果手机上加装一个适配器,如图:
在这里插入图片描述
回到程序中,适配器可以用这样的一张图来表示:
在这里插入图片描述适配器起到了通过调用接口1的方法1,就能调用到接口2的方法2。也就是说,接口1的抽象方法1通过适配器能在接口2的方法2中实现。

适配器模式由什么构成

由上图可知,适配器由目标接口(角色),适配器(角色),源接口(角色)3大部分组成。
目标接口(Target)一般由一个抽象类/接口来实现。
源接口(Adaptee)一般都有接口方法的具体实现。
适配器(Adapter)是核心,一般都是一个具体类。

适配器模式的简单实现

题目:有一个“苹果手机”的程序,它必须通过调用“苹果充电线”接口来进行实现。但是我们只有“安卓充电线”接口是实现了方法的。如何运用适配器模式来让程序充电?

类适配器

通过适配器类的extends源接口类并implements目标接口类进行适配。

Target:

//苹果
public interface Target {
		void charge() ;
}

Adaptee:

//安卓
public class Adaptee {
		void charge() {
			System.out.println("正在充电");
		}
}

Adapter:

//继承Adaptee,实现Target
public class Adapter extends Adaptee implements Target{
		public void charge() {
			super.charge();
		}
}

Client:

public class Client {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
			Target iphone=new Adapter();
			iphone.charge();
			}
}

输出:

正在充电

对象适配器

在适配器中运用已实现方法的Adaptee对象,进行Target接口的实现。

Target和Adaptee的代码不变。

Adapter:

public class Adapter implements Target{
		private Adaptee Android=new Adaptee();
		public Adapter(Adaptee Android) {
			this.Android=Android;
		}
		public void charge() {
			Android.charge();
		}
}

Client:

public class Client {
	public static void main(String[] args) {
			//已有Android线,创建其对象
			Adaptee Android=new Adaptee();
			//“插上适配器”
			Adapter iphone=new Adapter(Android);
			//用适配器充电
			iphone.charge();
	}
}

输出:

正在充电

运用场景

常用于老接口改造,用适配器模式可让他不影响旧版本项目使用,也可让新版本项目适应。
旧的类实现了原有的功能,但是基于扩展性,我们由另外的接口访问。适配器将字节流转换为字符流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值