适配器(Adpater Pattern)模式

 

一、定义:

Adapter Pattern,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因为接口不匹配而无法在一起工作的两个类能够在一起工作。

二、适配器模式的两种方式:

类的适配器模式和对象适配器模式。

三、类的适配器模式:

1、静态结构图:如图1所示

 

 

1:类的适配器模式静态结构图

1、模式涉及的角色:

a) 目标(Target)角色:这个就是类所期待的接口。

b) 源角色(Adpatee):现有适配的接口

c) 适配器(adpatee)角色:适配器类是本模式的核心,适配器类将源接口转换成目标接口,显然这一角色不可以是接口,必须是具体的类。

3、类适配器模式的语法定义:

a) 代码清单1Target的源代码

 

 

package cn.javaworker.yeming.pattern;
public interface Target {
	/**
	 * 这个是源类也有的方法
	 */
	void sampleOperation1();
	/**
	 * 这个是目标类具有的方法
	 */
	void sampleOperation2();
}

  b) Adaptee源代码

 

 

 

	package cn.javaworker.yeming.pattern;
	public class Adpatee {
		/**
		 * 源类里有一个sampleOperation1()方法
		 */
		void sampleOperation1() {};
	}

 c) 适配器角色Adapter的源代码

 

 

	package cn.javaworker.yeming.pattern;
	public class Adapter extends Adaptee implements Target {
		/**
		 * 由于源方法没有sampleOperation2,因此在适配器补充这个方法
		 */
		@Override
		public void sampleOperation2() {}
	}
 

四、类的适配器模式:

1、与类的适配器一样,对象的适配器模式把被适配的类的API转换成目标类的API,不同,对象的适配器不是使用集成,而是使用委派关系连接到Adaptee类。

如图2:对象适配器模式的静态结构图:


2:对象适配器模式的静态结构图

2、从上图可以看出,模式所涉及的角色:

Ø 目标(Target)角色:这个就是系统所期待的接口

Ø (Adaptee)角色:现在需要适配器的接口

Ø 适配器(Adapter)角色:适配器类是本模式的核心,适配器时将源接口转换成目标接口。

3、模式的示例源代码:

a) Target类的源代码

	package cn.javaworker.yeming.pattern;
	public interface Target {
		/**
		 * 这个是源类也有的方法
		 */
		void sampleOperation1();
		/**
		 * 这个是目标类具有的方法
		 */
		void sampleOperation2();
	}
  b)  Adaptee源代码

  package cn.javaworker.yeming.pattern;

	public class Adpatee {
		/**
		 * 源类里有一个sampleOperation1()方法
		 */
		public  void sampleOperation1() {};
	}

 c) Adapter源代码

	package cn.javaworker.yeming.pattern.duxiag;
	public class Adapter implements Target{
		private Adaptee adaptee;
		public Adapter(Adaptee adaptee) {
			this.adaptee = adaptee;
		}
		/**
		 * 源类中有有方法sampleOperation1(),
		 * 因此适配器直接委派即可
		 */
		@Override
		public void sampleOperation1() {
			adaptee.sampleOperation1();
		}
		/**
		 * 源类中没有这个方法sampleOperation2();
		 * 因此没有适配器类需要补充此方法
		 */
		@Override
		public void sampleOperation2() {}
	}
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值