适配器模式

本文深入探讨了适配器模式的两种实现方式:类适配器和对象适配器。通过具体的代码示例,详细解释了如何将特殊功能类转换为符合标准接口的类,使原本不兼容的类能一起工作。

一、类适配器

1.1、标准接口 和 实现类

package com.aop8.deginpattern.adaptee1;

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

/**
 *  标准接口 的实现类
 */
class ConcreteTarget implements Target {
	public void request() {
		System.out.println("普通类 具有 普通功能... request() ");
	}
}

1.2、特殊功能类、 适配器类(继承)

/**
 * 特殊功能类。
 * 有特殊功能,不符合标准接口的类
 */
class Adaptee {
	public void specificRequest() {
		System.out.println("被适配类具有 特殊功能... specificRequest() ");
	}
}

/**
 * 适配器类。
 * 继承 特殊功能类  ,同时实现标准接口。
 */
class Adapter extends Adaptee implements Target {
	public void request() {
		super.specificRequest();
	}
}

适配器类,继承 特殊功能类 ,同时实现标准接口。
适配器类里有两个方法

1.3、测试

public class AdapteeTest {

	public static void main(String[] args) {
		// 使用标准接口的功能类
		Target concreteTarget = new ConcreteTarget();
		concreteTarget.request();

		// 使用特殊功能类,即适配类
		Target specificAdapter = new Adapter();
		specificAdapter.request();
	}
}

二、对象适配器

2.1、标准接口 和 实现类

package com.aop8.deginpattern.adaptee2;

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

/**
 * 标准接口 的实现类
 */
class ConcreteTarget implements Target {
	public void request() {
		System.out.println("普通类 具有 普通功能... request() ");
	}
}

2.2、特殊功能类、 适配器类(构造器注入)

/**
 * 有特殊功能,不符合标准接口的类
 */
class Adaptee {
	public void specificRequest() {
		System.out.println("被适配类具有 特殊功能... specificRequest() ");
	}
}

/**
 * 适配器类,直接关联 被适配类,同时实现标准接口
 */
class Adapter implements Target {
	
	// 直接关联被适配类
	private Adaptee adaptee;

	// 可以通过构造函数传入具体需要适配的被适配类对象
	public Adapter(Adaptee adaptee) {
		this.adaptee = adaptee;
	}

	public void request() {
		// 这里是使用委托的方式完成特殊功能
		this.adaptee.specificRequest();
	}
}

2.3、测试

public class AdapteeTest2 {

	public static void main(String[] args) {
		// 使用普通功能类
		Target concreteTarget = new ConcreteTarget();
		concreteTarget.request();

		// 使用特殊功能类,即适配类,
		// 需要先创建一个被适配类的对象作为参数
		Target adapter = new Adapter(new Adaptee());
		adapter.request();
	}
}

三、 UML图

  • Target 表示目标接口, 也就是客户端认可的标准接口, 只有符合 Target 接口规范的类(实现了 Target 接口),才能为Client工作。

  • Adaptee 表示 需要适配的类。 这个类的特征是没实现 Target 接口, 提供了一些特殊功能,不符合标准。
    如果想被Client所用, 那么就需要一个适配器来让Client能够调用 这个被适配器标准化的特殊功能类

  • Adapter 适配器类, 适配器可以分为多种适配器

    • 类适配器
    • 对象适配器(委托方式)

3.1、类适配器 :

在这里插入图片描述

3.2、对象适配器 :

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值