设计模式-适配器

设计模式-适配器

ID:40887099

大小:48.50 KB

页数:7页

时间:2019-08-09

设计模式-适配器_第1页
设计模式-适配器_第2页
设计模式-适配器_第3页
设计模式-适配器_第4页
设计模式-适配器_第5页
资源描述:

《设计模式-适配器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设计模式之---适配器适配器模式先考虑这种设计模式适用场景:假如我们有一个运行良好的接口以及其实现,(Version1.0,比如说是按照用户要求开发的日志系统,这个日志系统是基于文件记录的FileLogger),但是由于系统升级或者用户需求变化等,我们又设计了一个新的接口以及实现(Version2.0,比如说是按照用户的要求,让日志系统是基于数据库记录的DBLogger),并且这个新设计的接口也能良好运行...假如到此为止,我们还没看出设计模式的用武之地。然而,我们知道,用户的需求创意是无穷无尽的,现在用户说了,我们想同时用这两种日志系统...就是说,现如今的

2、业务是运行在Version2.0的接口上,但是我要用Version1.0的实现...好,需求出来了,那么怎么实现呢?两个接口的方法都不一致(兼容)?说起来也简单,大约有这么2套方案:1,我们按照DBLogger的接口,在重新开发一套,适用于文件系统的日志。2,直接修改Version1.0的代码。先说第一种方案,这么做确实可以,而且很直观。但是在我们已完成相应功能的前提下,再重新写一套代码其实是没有必要的,并且代码复用性也不高。从这个角度考虑,如果有更好的办法,我们可以将这个方案pass掉。再说第二种方案,第二种方案也可以解决问题,但是它暴露的问题更加明显。如果

3、直接修改第一版本的代码,那么很可能造成其他依赖这些代码的代码不能运行,也就是存在依赖关系的约束。这个方案还不如第一个方案,所以我们毫不犹豫的把它pass!两种方案都被否定了,下面就是适配器模式上场了。适配器模式作用:将一个接口转化为客户端希望的另一个接口,使得原本由于接口不相容的两个类,可以相互配合的一起工作。主要就是起一个转换器的作用,目的就是复用原来的功能,说白了就是让两个接口匹配起来。想想看,适配器的作用在生活中很常见,比如管道转接头,三相插座插口转换器等。这就是适配器模式出现的背景...下面我们看一下代码的实现:首先看一下日志模型类(JavaBean)

4、:packagemode.adaptor;/***这是日志对象的模型简化点写,只有操作人和操作**@authorroot**/publicclassLogModel{privateStringuuid;privateStringoperator;//操作人privateStringoperate;//操作privateStringtimestamp;//操作时间publicStringgetUuid(){returnuuid;}publicvoidsetUuid(Stringuuid){this.uuid=uuid;}publicStringgetOperat

5、or(){returnoperator;}publicvoidsetOperator(Stringoperator){this.operator=operator;}publicStringgetOperate(){returnoperate;}publicvoidsetOperate(Stringoperate){this.operate=operate;}publicStringgetTimestamp(){returntimestamp;}publicvoidsetTimestamp(Stringtimestamp){this.timestamp=tim

6、estamp;}publicStringtoString(){return"用户"+this.getOperator()+"在"+this.getTimestamp()+"做了"+this.getOperate()+"操作";}}然后在看一下Version1.0的日志系统接口,面向文件的:packagemode.adaptor;importjava.util.List;/***文件日志系统的操作接口*@authorroot**/publicinterfaceFileLogger{publicListreadLog();publicvoidw

7、riteLog(LogModelmodel);}以及具体实现:packagemode.adaptor;importjava.util.List;/***文件日志操作的简单实现*@authorroot**/publicclassFileLoggerImplimplementsFileLogger{@OverridepublicListreadLog(){System.out.println("读取日志文件内容....");returnnull;}@OverridepublicvoidwriteLog(LogModelmodel){System

8、.out.println("写入日志文

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。