设计模式分类
==设计模式分为三种类型,共23种:这里先暂时只分享适配器模式的学习==
- 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
- 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
- 行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。
适配器模式
在应用程序中,我们可能需要让两个不同接口的类来进行通信,在不修改这两个的前提下我们可能会需要某个中间件来完成这个衔接的过程。这个中间件就是适配器。
适配器模式定义:将一个类的接口转换成客户期望的另一个接口,适配器(Adapter)让原本接口不兼容的类可以相互合作。
实例:
现在市面上的笔记本电脑越来越薄,很多电脑就去掉了传统的那种网线接口,是插不了网线的。要插网线就需要通过USB网线转化器来实现,这里就有一些适配器的思想体现了。
- USB网线转换器:一端连接电脑,另一端连接网线
角色分析:
目标接口: 客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口。(这里的电脑接口)
需要适配的类: 需要适配的类或适配者类。(网线)
适配器: 通过包装一个需要适配的对象,把原接口转换成目标对象!(USB网线转换器)
==三个类:网线,适配器,电脑==
网线抽象建模:
1 | package adapter; |
适配器抽象建模:
==第一种方法:== 类适配器,这种方法是通过继承Reticle去实现的,但Java是单继承的,Adapter类只能去适配一个东西,实际开发中相对不适用
1 | package adapter; |
==第二种方法:== 对象适配器,通过组合来实现(常用)
1 | package adapter; |
==适配器抽象为接口:==
1 | package adapter; |
电脑抽象建模:
1 | package adapter; |
小结
Computer(电脑)类 和 Reticle(网线)类没有任何关系,通过适配器将它们联系起来,从而实现了电脑上网
◆对象适配器优点
- 一个对象适配器可以把多个不同的适配者适配到同一个目标
- 可以适配一个适配者的子类,由于适配器和适配者之间是关联关系,根据
“里氏代换原则”
,适配者
的子类也可通过该适配器进行适配。
◆类适配器缺点
- 对于ava、C#等不支持多重类继承的语言,一次最多只能适配一个适配者类,不能同时适配多个适配者;
- 在ava、C#等语言中,类适配器模式中的目标抽象类只能为接口,不能为类,其使用有一定的局限性。
◆适用场景
- 系统需要使用一些现有的类,而这些类的接口(如方法名)不符合系统的需要,甚至没有这些类的源
代码。 - 想创建一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引
进的类一起工作。
编程之外
学好设计模式,给世界进行更好的建模! 欢迎小伙伴入坑公众号 编程之外,学习更多的编程知识,寻找编程之外的乐趣,互相监督一起成长!😁😁可在公众号回复 ==pdf== ,获取Java学习和面试的资料!
编程之外 |