适配器模式和代理模式的区别在哪(适配器模式和代理模式的区别)
代理模式的组成:
抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:它实现了抽象角色,是真实角色的代理。它通过真实角色的业务逻辑方法实现抽象方法,可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色要实现的业务逻辑,代理角色可以调用。
代理模式,面向对象软件的23种常用设计模式之一。(设计模式的说法来自《设计模式》这本书,原名《Design Patterns: Elements of Reusable Object-Oriented Software》。1995年由艾迪森韦斯利朗曼出版。Inc本书提出了23种基本设计模式,第一次将设计模式上升到理论高度并加以规范。)
代理模式的定义:为其他对象提供一个代理来控制对该对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,代理对象可以充当客户端和目标对象之间的中介。
(1)明确职责
真正的作用是实现实际的业务逻辑。其他不属于你职责范围的事情,你也不必在意。你可以通过后期的代理完成一个已完成的事务,附带的结果就是编程简洁明了。
(2)代理对象可以作为客户端和目标对象之间的中介,从而起到中介的作用,保护目标对象。
(3)高可扩展性
适配器模式在计算机编程中,适配器模式(有时称为包装器样式或包装器)使类的接口适应用户的期望。通过将类自己的接口包装在一个现有的类中,改编允许通常由于不兼容的接口而不能一起工作的类一起工作。
有两种类型的适配器模式:
对象适配器模式
-在这种适配器模式下,适配器保存它所包装的类的实例。在这种情况下,适配器调用包装对象的物理实体。
类适配器模式
-在这种适配器模式下,适配器继承自己实现的类(一般是多重继承)。
使用前提:
1.所有要实现的方法都在接口中指定。
2.但是,一个想要实现这个接口的具体类只使用了其中的几个方法,其他方法都没用。
实现方法
1.用抽象类实现现有接口,并实现接口中指定的所有方法。这些方法的实现都可以是“平庸”的实现——空方法;但是,这个类中的方法是具体方法,而不是抽象方法。否则,仍然必须实现具体子类中的所有方法,这将失去适配器的原始功能。
2.要实现接口的子类,只能实现1中的抽象类,内部实现时,只实现感兴趣的方法。
需要注意的事项
1.扮演适配器角色的类是实现现有接口的抽象类。
2.为什么要使用抽象类:
不应实例化该类。只充当适配器为它的子类提供一个公共接口,但它的子类只能专注于自己的兴趣。
模式分析
您希望使用现有的适配器模式,但其接口不符合您的需求。您希望创建一个可重用的类,它可以与其他不相关的类或不可预见的类一起工作。你想使用一些现有的子类,但是不可能每个子类化。一旦它们的接口匹配,对象适配器就可以适应它的父类接口。适配器就像普通的变压器,还有电脑变压器和插线板之间的电源连接线。虽然都是三相,但是电脑后面的插孔不能直接插在插线板上。
适配器模式和代理模式的区别简介
适配器模式(Adapter pattern):适配器模式(英文:Adapter pattern)有时也称为包装风格或包装。把一个类的接口转移到用户所期望的。通过将类自己的接口包装在一个现有的类中,改编使得由于接口不兼容而不能一起工作的类可以一起工作。
代理模式:为其他对象提供代理,以控制对该对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,代理对象可以充当客户端和目标对象之间的中介。
第二,困惑
设计模式总是通过增加层来解耦和扩展,但是如果我们在这个抽象的维度中看不到这个层真正的抽象意义,那么我们就很难理解一个模式的真正内涵?我有这个疑问。这两个东西加了一层,但是这一层有什么区别呢?
三个理解
很明显,适配器模式就是因为新旧接口不一致而导致客户端无法满意的问题。但是旧的接口不能完全重构,因为我们还是要使用一些实现这个接口的服务。然后,为了使用先前实现旧接口的服务,我们应该将新接口转换为旧接口;实现这种转换的类是抽象转换器。
比如java,早期的枚举接口是枚举,然后定义的枚举接口是迭代器;很多老类都实现了枚举接口来公开一些服务,但是现在我们想通过传入迭代器接口而不是枚举接口来调用这些服务。这时候我们就需要一个适配器,这样客户端就可以使用这个服务了(服务器只想用迭代器或者只知道这个接口)。
与适配器的应用场景相比,代理是不同的。虽然代理也增加了一层,但是代理提供的接口和原来的接口是一样的。代理模式的作用不是直接向客户端公开实现,而是通过代理层做一些处理。
推荐阅读
- 心电检测电路原理图怎么看(心电检测电路原理图)
- 摩托罗拉xt502相册(摩托罗拉xt502)
- 网上自助补办身份证 网上自助办理身份证
- 2021国考开始时间(速看!2021年国考时间定了!)
- 交通事故责任认定图示,交通事故责任认定图
- yy混响是什么意思(yy混响)
- 劳动局电话是不是24小时热线? 劳动局咨询人工服务
- 广东2022英语a级成绩什么时候出来?(广东省考成绩查询时间2022)
- 白色翻盖手机图片(白色翻盖手机)
- 奔驰gls450,多少钱(奔驰gls450价格多少)
- 感应电动势是什么(感应电动势公式_感应电动势的计算)
- 专利纠纷案件规定第十条? 专利侵权案例典型6例
- 2021年初级会计职称考试报名时间及入口(会计初级职称报名2021年截止时间)
- 与西南航空共度夏日立即预订2025年假期
- PromoHomo TV将在全球直播棕榈泉骄傲游行
- 探索与万豪国际集团一起游览秘鲁的5大理由
- Dot Inc和WEBTOON Entertainment推出全球首部触觉数字漫画
- 多普达535充电口(多普达535)
- 进口奥迪a5价格,进口奥迪a5