ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

适配器模式(Adapter)

2021-05-10 12:04:09  阅读:183  来源: 互联网

标签:Adapter Target 适配 适配器 模式 public void 接口 Adaptee


应用场景
以前开发的系统存在满足新系统功能需求的类,但其接口和新系统的接口不一致
使用第三方提供的组件,但组件接口定义和自己要求的接口定义不同

 

关键:适配器类继承适配者类或者拥有适配者类对象的引用

 

定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作

 

目标接口(Target):当前系统期待的接口,可以是抽象类或接口
适配者(Adaptee)
适配器(Adapter)

 

类适配器模式

//适配者类
class Adaptee {
	public void specificRequest() {
		System.out.println("适配者中业务代码");
	}
}

//目标接口
interface Target {
	public void request();
}

//适配器类
class Adapter extends Adaptee implements Target {
	public void request() {
		specificRequest();
	}
}

  

对象适配器模式

//适配者类
class Adaptee {
	public void specificRequest() {
		System.out.println("适配者中业务代码");
	}
}

//目标接口
interface Target {
	public void request();
}

//适配器类
class Adapter implements Target {
	private Adaptee adaptee;
	public Adapter(Adaptee adaptee) {
		this.adaptee = adaptee;
	}
	public void request() {
		adaptee.specificRequest();
	}
}

  

 

模式扩展:双适配器模式

//适配者接口
interface Adaptee {
	public void specificRequest();
}

//适配者接口实现类
class AdapteeImpl implements Adaptee {
	public void specificRequest() {
		System.out.println("适配者中业务代码");
	}
}

//目标接口
interface Target {
	public void request();
}

//目标接口实现类
class TargetImpl implements Target {
	public void request() {
		System.out.println("目标代码被调用");
	}
}

//双向适配器
class TwoWayAdapter implements Target,Adaptee {
	private Target target;
	private Adaptee adaptee;
	public TwoWayAdapter(Target target) {
		this.target = target;
	}
	public TwoWayAdapter(Adaptee adaptee) {
		this.adaptee = adaptee;
	}

	public void request() {
		adaptee.specificRequest();
	}
	public vodi specificRequest() {
		target.request()
	}
}

  

 

标签:Adapter,Target,适配,适配器,模式,public,void,接口,Adaptee
来源: https://www.cnblogs.com/tang321/p/14750437.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有