适配器模式与代理模式的区别

适配器模式与代理模式的区别

适配器模式:https://blog.csdn.net/weixin_49639753/article/details/120472980

代理模式:https://blog.csdn.net/weixin_49639753/article/details/119322908

区别:

目的不同
适配器模式:将一个接口转换成客户希望的另一个接口,使原本不兼容的接口类可以一起工作。

代理模式:给一个对象提供一个代理对象,并由代理对象控制对原对象的引用,是在对原有对象功能的增强,使客户不能直接与真正的目标对象通信。

举个例子:

适配器模式就像USB充电插头,将220伏的电源转化为USB接口,手机无法通过220伏的电源直接充电,所以中间需要加一个转化插头。
代理模式就像解决法律纠纷,用户将诉讼请求交给律师处理,由律师代替用户去进行诉讼,申辩等程序,用户本身不用直接参与,律师就是代理类,是对原有用户功能的增强。

如果没有适配器模式中没有适配类则无法工作,但是代理模式没有代理类也是可以的。

内部角色功能不同
适配器模式包含如下角色:
Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。

Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系。

Adaptee(适配者类):适配者即被适配的角色,它定义了一个已经存在的接口,这个接口需要适配,适配者类一般是一个具体类,包含了客户希望使用的业务方法,在某些情况下可能没有适配者类的源代码。

代理模式包含如下角色:
Subject:(抽象主题类):该类的主要职责是声明真实主题与代理的共同接口方法,该类既可以是一个抽象类也可以是一个接口。

RealSubject:(真实主题类):该类也称为被委托类或被代理类,该类定义了代理所表示的真实对象,由其执行具体的业务逻辑方法,而客户类则通过代理类间接地调用真实主题中定义的方法。

ProxySubject(代理类):该类也称为委托类或代理类,该类持有一个对真实主题类的引用,在其所实现的接口方法中调用真实主题类中相应的接口方法执行,以此起到代理的作用。

Client:(客户类):即使用代理类的类型。

适配器模式改变原对象的接口,而代理模式不改变所代理类的接口

适用范围不同
适配器模式:客户需要使用现有的类,而此类的接口不符合客户的需要;想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类;通过接口转换,将一个类插入另一个类系中。

代理模式:当无法或不想直接访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值