设计模式06-适配器模式,Adapter)

技术设计模式06-适配器模式,Adapter) 设计模式06-适配器模式(Adapter)对适配器模式的功能很好理解,就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起

设计模式06-适配器模式。

适配器模式的功能很好理解,就是把一个类的接口转换成客户端可以接受的另一个接口,这样两个因为两个接口不匹配而无法协同工作的类就可以协同工作。

适配器的重点是将一个接口的功能转换成另一个接口的功能。

设计模式06-适配器模式(Adapter)

概述

适配器模式的功能很好理解,就是把一个类的接口转换成客户端可以接受的另一个接口,这样两个因为两个接口不匹配而无法协同工作的类就可以协同工作。

适配器的重点是将一个接口的功能转换成另一个接口的功能。

优点

更好的可重用性。

系统需要使用现有的类,但是这类类的接口并不能满足系统的需求。那么通过适配器模式可以更好地重用这些功能。

更好的可扩展性。

实现适配器功能时,可以调用自己开发的函数,这样自然扩展了系统的功能。

缺点

过度使用适配器会使系统非常混乱,整体难以把握。比如接口A被调用是显而易见的,但实际上是内部适配接口b的实现,如果这种情况在一个系统中发生太多,那就是灾难。因此,如果没有必要,可以不使用适配器直接重构系统。

简单实现

JDK实现

1.现有的Source接口及其实现类SourceImpl。

公共接口来源{

void execute();

}

公共类SourceImpl实现了Source {

@覆盖

public void execute(){ 0

}

}

2.现在调用使用目标接口的源接口方法,而不修改与源相关的类。

公共接口目标{

void execute target();

}

3.在目标接口的实现类中调用源实现类的函数有两种适配方式。

第一种方法是通过持有Source实现类对象来调用Source方法。与下面的继承方法相比,建议通过汇编完成对Source接口的适配。

公共类HoldObjectAdapter实现了目标{ 0

私人最终来源来源;

HoldObjectAdapter(来源来源){ 0

super();

this.source=source

}

@覆盖

public void execute target(){ 0

source . execute();

}

}

第二种是通过继承Source实现类来调用Source方法。

公共类ExtendClassAdapter扩展了实现Target的SourceImpl

@覆盖

public void execute target(){ 0

execute();

}

}

源码解析

JDK

java.io.InputStreamReader

公共类InputStreamReader扩展了Reader {

私有最终流解码器SD;

public InputStreamReader(InputStream in){ 0

//.

}

}

InputStreamReader通过保持父类InputStream类型的不同接口或实现,使InputStream适应Reader。

Mybatis Log

org.apache.ibatis.logging.Log

公共接口日志{

//.

}

为了适应各种日志实现类,Mybatis使用适配器模式,将各种日志实现适配到同一个接口日志。

org . Apache . ibatis . logging . log4j 2 . log4j 2 logger impl

//.

import org . Apache . logging . log4j . logger;

公共类Log4j2LoggerImpl实现了日志{

私有静态最终标记=MarkerManager . GetMarker(LogFactory。MARKER);

//这里改编了apache的log4j2日志实现类。

私有最终记录器日志;

公共log4j 2 Logger impl(Logger Logger){ 0

log=logger

}

}

org . Apache . ibatis . logging . slf4j . slf4jloggerimpl

类Slf4jLoggerImpl实现日志{

私有最终记录器日志;

//这里改编了slf4j的日志实现类。

公共Slf4jLoggerImpl(日志记录器){ 0

log=logger

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/53727.html

(0)

相关推荐

  • spring基于领域分析设计的架构规范

    技术spring基于领域分析设计的架构规范本篇内容主要讲解“spring基于领域分析设计的架构规范”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spring基于领域分析设计的

    攻略 2021年11月16日
  • 华为手机什么型号好,现在华为哪款手机值得购买

    技术华为手机什么型号好,现在华为哪款手机值得购买华为手机比较好的型号当然推荐华为mate 系列和P系列了华为手机什么型号好。华为手机现在型号系列不断拓展,型号分布也十分丰富了,最为顶尖的华为手机型号先推荐华为mate 系

    生活 2021年10月28日
  • 记录ABAP开发的日常——SmartForms模板固定N行显示

    技术记录ABAP开发的日常——SmartForms模板固定N行显示 记录ABAP开发的日常——SmartForms模板固定N行显示前言:这里面介绍一下SmartForms里面使用Template的情况下

    礼包 2021年12月20日
  • 字段、复制字段、动态字段怎么使用

    技术Field、CopyField、DynamicField怎么使用这篇文章主要介绍“Field、CopyField、DynamicField怎么使用”,在日常操作中,相信很多人在Field、CopyField、Dyna

    攻略 2021年12月22日
  • 如何使用Xtrabackup备份MySQL数据库

    技术如何使用Xtrabackup备份MySQL数据库这篇文章将为大家详细讲解有关如何使用Xtrabackup备份MySQL数据库,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文则演示

    攻略 2021年10月27日
  • 抖音如何刷粉丝,抖音刷粉丝有靠谱平台吗

    技术抖音如何刷粉丝,抖音刷粉丝有靠谱平台吗抖音怎么涨粉丝比较快,抖音怎么做才会涨粉丝,学着点!抖音是一款深受大众喜欢的短视频app,虽然已经出现几年了,但是有很多用户的粉丝还是没有多少个。抖音刷粉平台有吗?这个肯定有的,

    测评 2021年10月21日