设计模式应用实例五(适配器模式)

前言
前四篇文章已介绍三种类型设计模式,其中模板方法模式,责任链模式是行为型模式,代理模式、装饰模式是结构型模式,本节介绍结构型模式的适配器模式,这四种模式在结构上比较类似,而又极易相互混淆,让程序作者应对实际问题时不知如何选择。

学习目标

1、认识适配器模式的结构。
2、如何在业务中使用适配器模式,快速响应业务需求变化。

概念

指将一个类的接口转换成客户端程序期望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

解释

一个类的接口,即已存在一个实现了业务逻辑的接口。
另外一个接口,即另一个存在的接口或类。
释义:可以这么理解,这两个接口,一个是本系统的接口,另一个是其它构件(第三方提供的jar包)提供的接口
实际业务场景中,现在你想将部分逻辑交给构件处理,部分逻辑交给本系统接口处理,那么你需要提供一个方案,既能使用构件的接口又能使用本系统的接口,那这个方案就是适配器类。
适配器更像一个伪装者,伪装成两个接口。
一般情况下适配器通常适配两个接口,如果适配三个,四个,那样就不是适配器模式了并且业务逻辑也搞复杂了,要紧记单一职责原则。

记忆关键点

在系统中已存在两种业务的接口
适配器的业务逻辑模型
编写一个适配器来使用已存在的业务。客户端程序只需使用适配器就可以完成业务处理。

类结构图

类适配器模式

实现步骤

请看实例。

相似模式,区分及应用

适配器模式与代理模式、装饰模式的区别请看《设计模式应用实例二(代理模式的应用)》

扩展联想

实例

在spring-context包下
org.springframework.validation.beanvalidation.SpringValidatorAdapter正是适配JSR-303标准javax.validator.Validator接口(请看hibernate-validator源码或《设计模式应用实例二(代理模式的应用)》的简要实现说明)。以便将javax.validator.Validator的方法开放给spring框架中CustomValidatorBean这样的包装器使用。

public class SpringValidatorAdapter implements SmartValidator, javax.validation.Validator {

   private javax.validation.Validator targetValidator;
   public SpringValidatorAdapter(javax.validation.Validator targetValidator) {
		Assert.notNull(targetValidator, "Target Validator must not be null");
		this.targetValidator = targetValidator;
	}
	//---------------------------------------------------------------------
	// Implementation of Spring Validator interface
	//---------------------------------------------------------------------
	//下面省略实现org.springframework.validation.SmartValidator 接口的方法

	//---------------------------------------------------------------------
	// Implementation of JSR-303 Validator interface
	//---------------------------------------------------------------------
	//下面省略实现javax.validation.Validator的方法
}

在上面程序源码中作者注明实现方法的接口

public class CustomValidatorBean extends SpringValidatorAdapter implements Validator, InitializingBean {
}

上面CustomValidatorBean 的作用是在spring容器中创建SpringValidatorAdapter对象以供框架在别的程序代码中使用SpringValidatorAdapter对象

回顾

1、介绍适配器模式的概念
2、简要说明适配器模式的结构
3、介绍Validator是如何被适配到spring框架中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值