博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
design pattens - adapter
阅读量:6694 次
发布时间:2019-06-25

本文共 487 字,大约阅读时间需要 1 分钟。

适配器模式适应这样的场景:一个已经存在的类(Adaptee),它因为接口和客户需要的并不匹配而不能直接被重用。

通过定义一个单独的适配器类,此类实现客户需要的接口,内部调用转向到这个已经存在的、但是接口不能直接适配的类Adaptee。

适配器模式的要点在于,通过引入一个适配器类,转换客户代码需要的接口到现存的类,这样做的好处就是这是增加代码,而不去修改代码。增加的是适配器类,无需改动的是先做的类,以及客户调用接口的代码。这也暗和“开闭原则” - 对修改封闭,对添加开放。

我们看一个案例。一个仓库系统,需要使用进销存系统的类来完成对应单据的过账。进销存内的现存类并不能提供仓库系统要求的接口,此时设计者就引入了一个适配器类,Adapter。设计者(王冯)提供的图是这样的:

正式的wiki上对适配器的定义,提供了两种实现适配器模式的可能。第一种是组合Adaptee类到Adapter类内,一种是Adapter类继承Adaptee类,两者的差异在标注的代码中得到体现。继承是更加省事的方案。当然有些条件下不能继承,就只能用组合。比如遇到了sealed类,就没有办法继承了。

转载地址:http://mhcoo.baihongyu.com/

你可能感兴趣的文章
控制器属性传值的一些小问题
查看>>
【Http协议】深入理解HTTP协议
查看>>
关于C/C++一些面试/笔试题的反思(超基础的知识点)
查看>>
STL--集和多集(set/multiset)
查看>>
Failed to create AppDomain 'xxx'. Exception has been Failed to create AppDomain
查看>>
CentOS6.5菜鸟之旅:VirtualBox4.3识别USB设备
查看>>
设计模式[14]-Composite
查看>>
False Sharing && Java 7
查看>>
Python快速学习09: 函数的参数
查看>>
【原】行内元素产生水平空隙是bug吗
查看>>
A*寻路算法入门(六)
查看>>
[android]android自动化测试十三之JavaMonkey跨APP操作
查看>>
Java网络教程之Socket
查看>>
用户研究存在的四大显见的误区
查看>>
带你实现开发者头条APP(三) 首页实现
查看>>
如何成为建数据库索引的高手?
查看>>
common-pools源码分析
查看>>
【JavaScript】script标签的属性
查看>>
Volley框架源码修改,添加头部验证Hreaders问题
查看>>
【Android开发】布局管理器-表格布局
查看>>