700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 设计模式——结构型模式之代理模式和适配器模式(类比+图解 从无到有 一文看懂几种

设计模式——结构型模式之代理模式和适配器模式(类比+图解 从无到有 一文看懂几种

时间:2020-08-20 21:04:20

相关推荐

设计模式——结构型模式之代理模式和适配器模式(类比+图解 从无到有 一文看懂几种

设计模式

系列文章:

一、创建型模式——工厂模式

二、创建型模式——单例模式、原型模式

三、创建型模式——建造者模式

四、结构型模式——装饰者模式

五、结构型模式——代理模式、适配器模式


文章目录

设计模式前言一、 代理模式的定义二、代理模式类图和一个设计实例三、适配器模式定义四、装饰者、代理、适配器的区别

前言

代理模式属于结构型模式中最为简单的模式之一,易于理解的同时又妙用无穷,能够适用于远程代理,安全保护,智能处理等多种方面。适配器模式较为复杂,同时与之前的装饰者又神似而有所差异,在Java输入输出流库中都是它们的身影

一、 代理模式的定义

顾名思义——代理模式就是为另外一个对象提供一个“代理人”,其他的访问都需要先通过该代理,判断or预处理后,再由代理对被代理对象进行控制。具体可以按照以下的图来理解:

浏览器向服务器发起的请求都被服务器程序代理,转发到真正的服务类,代理类作为中间人,可以执行判断请求、选择执行被代理类相关操作的功能、除此之外还能够实现安全保护等高级功能。

(Servlet、关于Servlet的概念及相关的Java Web基础知识可以到这篇文章——Java Web 基础之Servlet概念详解(Servlet是什么?主要功能?基础重点运用?))

二、代理模式类图和一个设计实例

首先,要求代理类和被代理对象都属于同一个类下的继承——方便代理能够无缝衔接被代理对象的功能。具体类图如下:

接下来讲一个实例:贴心电话小助手设计

出于某种需要,狂徒-张三需要一个贴心小助理来帮他处理来电请求,要求判断接听来自欧洲尼古拉斯协会的电话,其他电话一律不接,并礼貌回复。

具体设计如下,一切来电请求都由小助理处理,不能直接连接到张三(被代理对象)。

三、适配器模式定义

想必大家都使用过手机数据线转接头吧,这其实就是一种适配器,设计模式中的概念也同样如此——

将一个类的接口转化成客户所希望的另一种接口,实现类/对象的组合(数据线和充电口的紧密结合)

再结合类图分析一下适配器具体怎么运作的:

首先我们设计出了Adaptee,原来这个类使用得挺好,但是现在需要转化成另一个接口,在不完全放弃的情况下要求给该类/对象装一个适配器。

于是在要用特殊接口的时候,用Adapter包装一下——看起来很像装饰者模式,因为二者都是包装模式之一;又有点象接口代理(接下来讲三者的区别)

四、装饰者、代理、适配器的区别

先来看看三者的类图

(适配器模式和代理模式)

首先:代理模式实现一对一代理,一个代理负责一个被代理对象的处理;而装饰者和适配器都可以层层嵌套,形成包装链。

然后是装饰者是实现灵活扩展功能或者动态添加属性的需要;而适配器设计是为了满足不同接口以连接类与类,实现功能重用的需要;二者设计目的不同,装饰者设计模式更多用在设计之初,而适配器则是用于后期补偿。

设计模式——结构型模式之代理模式和适配器模式(类比+图解 从无到有 一文看懂几种模式的区别)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。