适配器模式

java设计模式----装饰器模式

倖福魔咒の 提交于 2019-11-27 23:52:44
Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样。因此,装饰器模式具有如下的特征: 它必须具有一个装饰的对象。 它必须拥有与被装饰对象相同的接口。 它可以给被装饰对象添加额外的功能。 用一句话总结就是:保持接口,增强性能。 装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。它与对象的适配器模式的异同点如下。 相同点:都拥有一个目标对象。 不同点:适配器模式需要实现另外一个接口,而装饰器模式必须实现该对象的接口。 先写一个接口类:Sourcable package model; public interface Sourcable { public void opration(); } 再设置一个实现类:Source,重写方法。 package model; public class Source implements Sourcable{ public void opration(){ System.out.println("原始类方法"); } } 装饰器类 Decorator1.java 采用了典型的对象适配器模式,它首先拥有一个 Sourcable 对象 source ,该对象通过构造函 数进行初始化。然后它实现了 Sourcable.java 接口,以期保持与 source

23种设计模式详解

牧云@^-^@ 提交于 2019-11-27 17:59:48
原文链接: http://blog.csdn.net/zhangerqing 一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下: 二、设计模式的六大原则 总原则:开闭原则(Open Close Principle) 开闭原则就是说 对扩展开放,对修改关闭 。在程序需要进行拓展的时候,不能去修改原有的代码,而是要扩展原有代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类等,后面的具体设计中我们会提到这点。 1、单一职责原则 不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,如若不然,就应该把类拆分。 2、里氏替换原则(Liskov Substitution Principle) 里氏替换原则中,子类对父类的方法尽量不要重写和重载。因为父类代表了定义好的结构,通过这个规范的接口与外界交互

适配器

只谈情不闲聊 提交于 2019-11-27 11:08:11
适配器是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与 串口 的转接设备等。 在计算机中,适配器通常内置于可插入主板上插槽的卡中(也有外置的),卡中的适配信息与处理器和适配器支持的设备间进行交换。 多协议代理支持的协议适配器包括:SNMP、TL1、RMI、CORBA、HTTP和HTML适配器。 适配模式 在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 适配器模式主要应用于,当接口里定义的方法无法满足客户的需求,或者说接口里定义的方法的名称或者方法界面与客户需求有冲突的情况。 两类模式:对象适配器模式 - 在这种适配器模式中,适配器容纳一个它我包裹的类的实例。在这种情况下,适配器调用被包裹对象的物理实体。类适配器模式 - 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。 适配器不具备数据速率转换功能。 在计算机编程中,适配器包括:容器适配器、迭代器适配器、泛函适配 主机适配器 ( host adapter )或 主机总线适配器 ( host bus adapter , HBA )是以计算机为主机系统

设计模式之适配器模式

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 11:01:54
将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 /*--> */ /*--> */ Target目标角色:定义把其他类转换为何种接口,也就是我们的期望接口 /*--> */ /*--> */ Adaptee源角色:是已经存在的、运行良好的类或对象,经过适配器角色的包装,它会成为一个崭新、靓丽的角色。 /*--> */ /*--> */ Adapter适配器角色:把源角色转换为目标角色。(通过继承或是类关联的方式) 一、类适配器模式 java是单继承机制,所以类适配器需要继承src类,这就要求target类必须是接口,有一定的局限性 src 类的方法在 Adapter 中都会暴露出来,也增加了使用的成本 。 由于其继承了 src 类,所以它可以根据需求重写 src 类的方法,使得 Adapter 的灵活性增强了 。 二、对象适配器模式(常用) 只是将adapter类作修改,不是继承src类,而是持有src类的实例,以解决兼容性问题。 三、接口适配器模式 当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法), 那么该抽象类的子类可以有选择地覆盖父类的某些方法来实现需求。 四、SpringMVC HandlerAdapter源码分析 优点: /*--> */ /*-->

GOF23设计模式-结构型(7种)

醉酒当歌 提交于 2019-11-27 10:51:28
文章目录 二、结构型模式 1. 外观模式(门面模式) 定义 适用场景 优点 缺点 源码 外观模式和中介者模式 外观模式和单例模式 外观模式和抽象工厂模式 2. 装饰者模式 定义 适用场景 优点 缺点 源码 装饰者模式和代理模式 装饰者和适配器模式 3. 适配器模式 定义 适用场景 优点 缺点 扩展 源码 适配器模式和外观模式 4. 享元模式 定义 适用场景 优点 缺点 内部状态和外部状态 源码 享元模式和代理模式 享元模式和单例模式 5. 组合模式 定义 适用场景 优点 缺点 源码 组合模式和访问者模式 6. 桥接模式 定义 适用场景 优点 缺点 源码 桥接和组合模式 桥接模式和适配器模式 7. 代理模式 定义 适用场景 优点 缺点 静态代理和动态代理 源码 源码链接:https://github.com/ouyangxizhu/design_pattern.git 二、结构型模式 1. 外观模式(门面模式) com.ouyangxizhu.design.pattern.structural.facade 定义 提供了一个结构来访问子系统中的一群接口。 这个外观结构 封装 了子系统之间的调用逻辑,调用顺序。比如购物,用户只关注我能不能买成功(下单功能),至于怎么减库存,怎么生成订单,怎么物流配送都不需要知道。 适用场景 当子系统越来越复杂,增加外观模式提供简单接口调用。

GUI窗体监听---适配器模式

时间秒杀一切 提交于 2019-11-27 10:00:19
GUI(布局管理器) * FlowLayout(流式布局管理器) * 从左到右的顺序排列。 * Panel默认的布局管理器。 * BorderLayout(边界布局管理器) * 东,南,西,北,中 * Frame默认的布局管理器。 * GridLayout(网格布局管理器) * 规则的矩阵 * CardLayout(卡片布局管理器) * 选项卡 * GridBagLayout(网格包布局管理器) * 非规则的矩阵 ###25.15_GUI(窗体监听) Frame f = new Frame("我的窗体"); //事件源是窗体,把监听器注册到事件源上 //事件对象传递给监听器 f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { //退出虚拟机,关闭窗口 System.exit(0); } }); a.什么是适配器 * 在使用监听器的时候, 需要定义一个类事件监听器接口. * 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐. * 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可. * b.适配器原理 * 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的. *

常用的设计模式

末鹿安然 提交于 2019-11-27 01:27:29
常用的设计模式有哪些?很多时候一时想不起来。因此编个顺口溜方便记忆。 组织(组合模式)经过观察(观察者模式),命令(命令者模式)我,找个代理(代理模式),建个工厂(工厂模式),生产单例产品(单例模式),然后迭代(迭代模式)检查所有的产品,不合格的产品要适配(适配器模式)一下。 转载于:https://www.cnblogs.com/nzbbody/archive/2012/08/24/2654145.html 来源: https://blog.csdn.net/weixin_30588907/article/details/99234397

适配器模式

淺唱寂寞╮ 提交于 2019-11-27 01:26:57
解决的问题: 站场图中每个设备都有一个Id属性,使用TextBlock来显示文字,但是TextBlock没有Id属性。 解决办法: 创建一个类,继承TextBlock,并且增加一个Id属性。这里其实用到的是,类的适配器模式(继承方式)。当然也可以使用对象的适配器模式(委托方式)。 转载于:https://www.cnblogs.com/nzbbody/p/3309263.html 来源: https://blog.csdn.net/weixin_30535843/article/details/99234415

项目中的设计模式【适配器模式】

末鹿安然 提交于 2019-11-27 01:07:48
项目应用场景:我们的服务会接入不同的设备,比如大华设备,海康设备,这些设备sdk的接口不同。需要根据不同的设备类型进行适配。下层有适配器管理器和一组适配器,服务告诉适配器管理是哪一种设备,适配器管理器创建出一个适配器。这个odbc的道理一样。odcb可以认为是适配器管理器,mysql的odbc驱动是适配器,负责与mysql服务交互,oracle的odbc驱动是适配器,负责与oracle交互。 转载于:https://www.cnblogs.com/nzbbody/p/4604617.html 来源: https://blog.csdn.net/weixin_30412577/article/details/99234886

设计模式之结构类模式大PK

家住魔仙堡 提交于 2019-11-27 00:36:46
结构类模式大PK 结构类模式包括 适配器模式 、 桥梁模式 、组合模式、 装饰模式 、 门面模式 、 享元模式 和 代理模式 。之所以称其为结构类模式,是因为他们都是通过组合类或对象产生更大结构以适应更高成层次的逻辑需求。我们来分析一下装饰模式和代理模式、装饰模式和适配器模式。 装饰模式VS代理模式    首先要说明的是装饰模式是代理模式的特殊应用,两者的共同点是有相同的接口,不同点事代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,着重类功能的变化。我们看看两者的类图吧!就是一模一样只是代理类和装饰类的名字不一样了而已。我们通过代理类和装饰类看看二者的区别吧。 //代理模式还是侧重于对代理过程的控制,是否允许功能的执行 public class SingerAgent{ private Singer singer; public SingerAgent(Singer singer){ this.singer = singer; } public void singing(){ Random rand = new Random(); if(rand.nextBoolean()){ System.out.println("代理人同意歌手唱歌"); singer.sing(); }else{ System.out.println("代理人不同意歌手唱歌"); } }