适配器模式

适配器模式

谁说我不能喝 提交于 2020-02-28 04:23:27
目的 实际业务中实现类继承的接口有太多,而我们实际想用的很少,解决这样冲突的办法 流程 定义一个abstract类实现接口 定义一个类继承atstract,间接继承了接口 知识点 abrstract继承接口可以选择实现接口的方法, 或者不实现,但是未被实现的方法必须由继承了这个类的子类实现. abstract这类相当于接口的一个过滤器,单纯的过滤实现类不需要实现的方法 代码: public interface Servlet { public void doGet(); public void doPost(); public void service(); } /** \* 抽象类可以选实现接口的方法,没有实现的接口必须由其子类实现 */ public abstract class ServletAdapter implements Servlet{ public void doGet(){} public void doPost(){} // 未实现 // public void service() } /** \* 子类继承父类是abstract的类,必须实现其父类未实现的接口 */ public class MySevelet extends ServletAdapter { public void service() { System.out.println(

设计模式-适配器模式

╄→гoц情女王★ 提交于 2020-02-25 16:07:46
设计模式-适配器模式 定义 将一个或多个类或接口转换成客户端需求的另一种的类或接口,在不修改双方的情况下使得两个类或接口能在一起工作 UML 用继承的关系 1对1的适配 对象组合的方式 实现多对1的适配 优点 提高类的复用度(主要是在不修改当前设计的前提下扩展) 灵活性好,可以适应多种情况下的动态扩展以及卸载 缺点 空 实现 假设场景:原系统中已经设计好的了商品设计,目前需要接入第三方商品库系统 原系统中的设计 public interface IGoodInfo { String getName(); String getPic(); Long getWeight(); } @Data public class GoodInfo implements IGoodInfo { @Override public String getName() { System.out.println("商品名称是XXX"); return null; } @Override public String getPic() { System.out.println("商品的图片是XXX"); return null; } @Override public Long getWeight() { System.out.println("商品的重量是XXX"); return null; } }

设计模式—适配器模式

杀马特。学长 韩版系。学妹 提交于 2020-02-21 14:18:40
参考: https://www.cnblogs.com/PatrickLiu/p/7660554.html 1.什么是适配器 2适配器有什么优势 3适配器怎么用 定义:【结构型】设计模式有如下几种:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。【创建型】的设计模式解决的是对象创建的问题,那【结构型】设计模式解决的是类和对象的组合关系的问题。今天我们就开始讲【结构型】设计模式里面的第一个设计模式,中文名称:适配器模式,英文名称:Adapter Pattern。(举个例子:说起这个模式其实很简单,在现实生活中也有很多实例,比如:我们手机的充电器,充电器的接头,有的是把两相电转换为三相电的,当然也有把三相电转换成两相电的。我们经常使用笔记本电脑,笔记本电脑的工作电压和我们家里照明电压是不一致的,当然也就需要充电器把照明电压转换成笔记本的工作电压,只有这样笔记本电脑才可以正常工作。太多了,就不一一列举了。我们只要记住一点,适配就是转换,把不能在一起工作的两样东西通过转换,让他们可以在一起工作。) 模式的组成 可以看出,在适配器模式的结构图有以下角色: (1)、目标角色(Target) :定义Client使用的与特定领域相关的接口。 (2)、客户角色(Client) :与符合Target接口的对象协同。 (3)、被适配角色(Adaptee)

num10---适配器模式

…衆ロ難τιáo~ 提交于 2020-02-17 09:03:25
1、类适配器   Adapter类,通过继承 被适配的类,实现目标类的接口,完成适配。            分析:     java 单继承,所以适配器类 需要继承 被适配类,这就要求目标类必须是接口,有一定局限性。     被适配类的方法在 适配器类 中 会暴露出来,增加使用成本     因为继承了被适配类,可以根据需求重写被适配类的相关方法,增加了适配器类的灵活性。   2、对象适配器 ,针对 类适配器 中的继承,作出一定调整。       类适配器中的其余代码不变,只需把适配器类中的代码做出改变即可。       3、接口适配器    ----------- 适配器模式 在springmvc 框架应用的源码               仿springmvc 代码案例:    //多种Controller实现 public interface Controller { } class HttpController implements Controller { public void doHttpHandler() { System.out.println("http..."); } } class SimpleController implements Controller { public void doSimplerHandler() { System.out

设计模式7——适配器模式

随声附和 提交于 2020-02-17 04:24:21
如果饿了就吃,困了就睡,渴了就喝,人生就太无趣了 1 定义 1.1 概念 将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。 适配器模式就如同它本身的名字一样形象,如图1:现有系统暴露的接口与厂商类的接口不匹配,二者不能结合使用。 现在需要一个适配器来将两个系统结合起来。如图2: 1.2 类图 适配器模式分为两种:对象适配器和类适配器。 对象适配器:让适配器类 Adapter 去实现目标接口 Target ,适配器类 Adapter 和被适配者 Adaptee 进行组合。而客户此时只看到目标接口。 类适配器:因为java是不支持多继承的,所以在这里把类图放在这仅供参考不做解释了。 2.例子 2.1类图 如图5:有鸭子接口 Duck 和火鸡 Turkey 接口,有时候需要让火鸡充当鸭子,所以就有了 TurkeyAdapter 类实现了 Duck 接口,在 TurkeyAdapter 中通过调用 Turkey 的方法让其适配鸭子接口。也有时候要让鸭子充当火鸡,做法和之前的类似。 MallardDuck 和 WildTurkey 分别是 Duck 和 Turkey 的实例,用来和适配器类做对比。其他两个 DuckTestDrive 和 TurkeyTestDrive 是测试类。 2.2代码 (1) 火鸡充当鸭子 public interface Duck

设计模式7——适配器模式

旧巷老猫 提交于 2020-02-16 18:23:12
定义:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原来接口不兼容的类可以合作无间。 类图: 要点: 1、当需要使用一个现有的类而其接口并不符合你的需要时,就使用适配器; 2、适配器改变接口以符合客户的期望; 3、实现一个适配器可能需要一番功夫,也可能不费功夫,视目标接口的大小和复杂度而定; 4、适配器模式有两种形式:对象适配器和类适配器。类适配器需要用到多重继承; 5、适配器将一个对象封装起来以改变其接口。 来源: https://www.cnblogs.com/chenyaoyun/archive/2010/12/27/1918323.html

【专题】适配器、桥接与外观三模式的关系

隐身守侯 提交于 2020-02-16 07:49:23
这几天一直在研究各种各样的设计模式,在学习适配器模式、桥接模式和外观模式模式的时候,发现他们之间存在着一定的关系,实际上模式不适单一存在的,在我们的现实编程生活中往往是几种模式结合使用的。   1.适配器模式与桥接模式的区别和联系   适配器模式和桥接模式都是间接引用对象,因此可以使系统更灵活,在实现上都涉及从自身以外的一个接口向被引用的对象发出请求。    两种模式的区别在于使用场合不同,适配器模式主要解决两个已有接口间的匹配问题,这种情况下被适配的接口的实现往往是一个黑匣子。我们不想,也不能修改 这个接口及其实现。同时也不可能控制其演化,只要相关的对象能与系统定义的接口协同工作即可。适配器模式经常用在与第三方产品的功能集成上,采用该模式适 应新类型的增加的方式是开发针对这个类型的适配器,如下所示。   桥接模式则不同,参与桥接的接口是稳定的,用户可以扩展和修改桥接中的类,但是不能改变接口。桥接模式通过接口继承或者继承实现功能扩展,如图所示。   按照GOF的说法,桥接模式和适配器模式用于设计的不同阶段,桥接模式用于设计的前期,即在设计类时将类规划为逻辑和实现两个大类,使它们可以分别进行演化;而适配器模式用于设计完成之后,当发现设计完成的类无法协同工作时,可以采用适配器模式。 然而,很多情况下在设计初期就要考虑适配器模式的使用,如涉及大量第三方应用接口的情况。   2

设计模式2-结构型模式

隐身守侯 提交于 2020-02-14 22:00:05
前言 类之间的联系,主要有继承和组合 结构型模式:处理类与类之间的关系,它们之间的协作更加优雅,继承与组合,优先使用组合 一、适配器模式 当现有类与需要调用的类不匹配时,需要创建一个适配器类 来将不匹配的类 封装匹配的类-----》通过组合方式 用法: 1、 AppleBagAdapter继承AppleBag的功能,同时组合OrgangeBag对象,使AppleBag与OrangeBag产生关联。 2、当AppleBag目标方法被调用时, AppleBagAdapter转调OrgangeBag的对象方法 PS: OrangeBag和AppleBag都是已有类,是系统已有方法。 整个过程,只新增了一个AppleBagAdapter类,去充当AppleBag实现 二、桥接模式 ---------将两个维度变化的功能组合起来,为的是独立变化。 桥接模式: 设计之初的分离 适配器模式:将2个已经存在的类,进行适配组合 来源: CSDN 作者: ccddsdsdfsdf 链接: https://blog.csdn.net/lh87270202/article/details/103656658

设计模式之委派模式及适配器模式

大兔子大兔子 提交于 2020-02-14 00:28:17
委派模式:   委派模式不属于23种设计模式, 主要角色有三种: 抽象任务角色, 委派者角色, 具体任务角色.实现层面上, 定义一个抽象接口, 它有若干实现类, 他们真正执行业务方法, 这些子类是具体任务角色; 定义委派者角色也实现该接口, 但它负责在各个具体角色实例之间做出决策, 由它判断并调用具体实现的方法.委派模式对外隐藏了具体实现, 仅将委派者角色暴露给外部, 在spring中以 Delegate与 Dispatcher结尾的,都是委派模式。其实委派模式就是代理模式跟策略模式的一种特殊的组合情况。 应用场景: 不属于 23 种设计模式之一,是面向对象设计模式中常用的一种模式。这种模式的原理为类 B和类 A 是两个互相没有任何关系的类,B 具有和 A 一模一样的方法和属性;并且调用 B 中的方法,属性就是调用 A 中同名的方法和属性。B 好像就是一个受 A 授权委托的中介。第三方的代码不需要知道 A 的存在,也不需要和 A 发生直接的联系,通过 B 就可以直接使用 A 的功能,这样既能够使用到 A 的各种功能,又能够很好的将 A 保护起来了,一举两得。 意图:    定义抽象接口的一个实现类, 他负责判断和调用哪个实现类的实例。 优点: 对内隐藏实现, 易于扩展; 简化调用;   委派模式大量使用在spring,mybatis等开源框架中,

委派模式和适配器模式

走远了吗. 提交于 2020-02-13 09:02:52
注意:委派模式不在23种设计模式中,但是在spring 中大量使用到,非常猖狂地用到这个模式。所以我们不得不去撩一下这个模式。 委派模式=静态代理+策略模式 他们组合起来的一种特殊设计模式 例如: 1、boss--->项目经理------》员工A、员工B、员工C 2、dispatcherSelvert就是用到这个委派模式。将URL进行解析和分发到对应的controller上。 代理模式注重:处理过程 策略模式注重:扩展性,用户只能选择,不能修改内容 委派模式注重:内部的灵活度 来源: https://www.cnblogs.com/vingLiu/p/10842159.html