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

相关推荐

  • 常见Python的Web开发框架有哪些呢

    技术常见Python的Web开发框架有哪些呢今天就跟大家聊聊有关常见Python的Web开发框架有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  在今天,

    攻略 2021年11月16日
  • 皆为利来,熙熙攘攘皆为利往下句是什么

    技术皆为利来,熙熙攘攘皆为利往下句是什么天下熙熙皆为利来,天下攘攘皆为利往皆为利来。出自:司马迁·西汉《史记 货殖列传》
    译文:天下人为了利益而蜂拥而至,为了利益各奔东西。
    《史记》是西汉著名史学家司马迁撰写的一部纪传体

    生活 2021年10月28日
  • Python怎样爬取上万条大众点评数据

    技术Python怎样爬取上万条大众点评数据今天就跟大家聊聊有关Python怎样爬取上万条大众点评数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。中国的快餐市场竞

    攻略 2021年10月26日
  • Adapter适配器中如何通过Interface接口响应回调

    技术Adapter适配器中如何通过Interface接口响应回调这篇文章主要介绍了Adapter适配器中如何通过Interface接口响应回调,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获

    攻略 2021年11月15日
  • html5新增标签是什么(html5视频标签是哪个)

    技术html5视频标签是哪个小编给大家分享一下html5视频标签是哪个,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    攻略 2021年12月17日
  • nginx中的两个模块的proxypass的区别

    技术nginx中的两个模块的proxypass的区别 nginx中的两个模块的proxy_pass的区别ngx_stream_proxy_module模块的proxy_pass指令只能在server段使

    礼包 2021年11月29日