设计模式之---适配器设计模式

摘要:
1个包装适配器;23公共接口目标{4void handleReq();5}4。创建一个适配器类——如果我们的系统在开发后不再需要维护,那么许多模式都是不必要的。

结构型模式:

  核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。

  分类:适配器模式、代理模式、桥接模式、装饰模式、组合模式、外观模式、享元模式


适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于不兼容而不能一起工作的那些类可以在一起工作。

模式中的角色:

——目标接口(Target):客户机所期待的接口。目标可以是具体的或抽象的类,也可以是接口。

——需要适配的类(Adaptee):需要适配的类或适配者类。

——适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。

设计模式之---适配器设计模式第1张

如上图所示:Client相当于一台笔记本(只有USB口),Target相当于一个USB接口,Adapter相当于一个适配器,Adaptee相当于一个带有PS/2接口的键盘。

现在想要键盘与笔记本连接。

1. 创建一个客户端类

复制代码
 1 package adapter;
 2 /***
 3  * 客户端类
 4  * 相当于笔记本,只有USB接口
 5  * @author ZTQ
 6  *
 7  */
 8 public class Client {
 9     public void test1(Target t){
10         t.handleReq();
11     }
12     
13     public static void main(String[] args) {
14         Client c = new Client();
15         
16         Adaptee a = new Adaptee();
17         
18         Target t = new Adapter();
19 //        Target t = new Adapter2(a);
20         
21         c.test1(t);
22     }
23 }
复制代码

2. 创建一个被适配的类。

复制代码
 1 package adapter;
 2 /***
 3  * 被适配的类
 4  * 相当于PS/2键盘
 5  * @author ZTQ
 6  *
 7  */
 8 public class Adaptee {
 9     public void request(){
10         System.out.println("可以完成客户需要的功能!");
11     }
12 }
复制代码

3. 创建一个Target接口。

1 package adapter;
2 
3 public interface Target {
4     void handleReq();
5 }

4. 创建一个适配器类。

复制代码
 1 package adapter;
 2 /***
 3  * 适配器(类适配器方式)
 4  * 相当于USB和PS/2的转换器
 5  * @author ZTQ
 6  *
 7  */
 8 public class Adapter extends Adaptee implements Target{
 9 
10     @Override
11     public void handleReq() {
12         super.request();
13     }
14     
15 }
复制代码

或者

复制代码
 1 package adapter;
 2 /***
 3  * 适配器(对象适配器方式,使用了组合的方式跟被适配对象整合)
 4  * 相当于USB和PS/2的转换器
 5  * @author ZTQ
 6  *
 7  */
 8 public class Adapter2 extends Adaptee implements Target{
 9     
10     private Adaptee adaptee;
11     
12     @Override
13     public void handleReq() {
14         adaptee.request();
15     }
16     
17     public Adapter2(Adaptee adaptee) {
18         super();
19         this.adaptee = adaptee;
20     }
21     
22 }
复制代码

5. 运行结果。

可以完成客户需要的功能!

工作中的场景:

--经常用来做旧系统改造和升级。

--如果我们的系统开发之后再也不需要维护,那么很多模式都是没必要的。但是不幸的是,事实却是维护一个系统的代价往往是开发一个系统的数倍。

我们学习中见过的场景:

--java.io.InputStreamReader(InputStream)

--java.io.OutputStreamWriter(OutputStream)

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇特征分解 奇异值分解Unity 学习笔记5下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#设计模式总结(转)

一、引言   经过这段时间对设计模式的学习,自己的感触还是很多的,因为我现在在写代码的时候,经常会想想这里能不能用什么设计模式来进行重构。所以,学完设计模式之后,感觉它会慢慢地影响到你写代码的思维方式。这里对设计模式做一个总结,一来可以对所有设计模式进行一个梳理,二来可以做一个索引来帮助大家收藏。   PS: 其实,很早之前我就看过所有的设计模式了,但是...

Java设计模式7:适配器模式

适配器模式 适配器模式说的是,可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法在一起工作的两个类可以一起工作。 适配器模式的用途 适配器模式的用途,在网上找了一幅图,挺形象的: 比方说我有一个台灯,其插头是标准的两相的交流电插头,即阳极、阴极。我旅游到了一个地方想用自己的台灯,但发现旅馆里面只有三相的插头,即在阳极、阴极的基础...

SpringMVC2

1       SpringMVC架构 1.1     Spring web mvc介绍 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来: 1.2     Web MVC mvc设计模式在b/s系统下应用: 1、  用户发起request请求至控制器(Contro...

亲身实践,JAVA最优良的Adapter模式适配器模式

网上关于JAVA的适配器模式例子有很多,但真的有少实在不怎么样,看也不懂。自己总结了一个在性能和结构上都很容易理解的Adapter模式。 Adapter模式也叫适配器模式,是由GoF提出的23种设计模式的一种。Adapter模式是构造型模式之一,通过Adapter模式,可以改变已有类(或外部类)的接口形式。 在大规模的系统开发过程中,我们常常碰到诸...

设计模式学习笔记十一:适配器模式(Adapter Pattern)

    1.概述    在软件开发中,我们经常会遇到系统间集成,在系统集成时,最常见的问题就是系统间的接口不一致。很多能够满足功能的系统模块,由于接口不一致,导致无法使用。例如,常用的媒体播放器是MS Media player和RealPlayer,他们的文件结构和软件接口完全不同,前者支持WMF格式的音频和视频,后者支持RM格式的音频和视频。如果我们希望自...

Java 设计模式六原则及23中常用设计模式

一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访...