设计模式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)

相关推荐

  • html中设置背景颜色的语句是(html中设置背景颜色的代码是)

    技术在html中设置背景颜色的代码是什么这篇文章主要为大家展示了“在html中设置背景颜色的代码是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在html中设置背景颜色的

    攻略 2021年12月19日
  • https

    技术https httpshttps认证流程
    服务器生成一对密钥,私钥自己留着,公钥交给数字证书认证机构(CA)
    CA进行审核,并用CA自己的私钥对服务器提供的公钥进行签名生成数字证书
    将生成的数字证书

    礼包 2021年11月9日
  • rman duplicate出现PLS-00201错误怎么办

    技术rman duplicate出现PLS-00201错误怎么办小编给大家分享一下rman duplicate出现PLS-00201错误怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这

    攻略 2021年11月17日
  • 如何把mysqld压测到崩溃重启

    技术如何把mysqld压测到崩溃重启小编给大家分享一下如何把mysqld压测到崩溃重启,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、压测环境工具准备:centos7.5
    sysbench2.

    攻略 2021年10月26日
  • phpmyadmin如何实现root账户外部访问

    技术phpmyadmin如何实现root账户外部访问本篇内容介绍了“phpmyadmin如何实现root账户外部访问”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这

    攻略 2021年11月9日
  • 离职怎么写,工作不干了辞职报告怎么写

    技术离职怎么写,工作不干了辞职报告怎么写尊敬的领导离职怎么写:  我很遗憾自己在这个时候向公司正式提出辞职申请。  来到公司也已经快两年了,在这近两年里,得到了公司各位同事的多方帮助,我非常感谢公司各位同事。正是在这里我

    生活 2021年10月31日