适配器模式
来源:互联网 发布:ios 阿里百川的云推送 编辑:程序博客网 时间:2024/05/20 23:40
适配器模式是7中结构型模式较为简单的一种,适配器,顾名思义,是作为处理两种不同接口或标准的中间沟通者。
这句话的含义是,适配器模式的场景大概要满足一下需求(以手机充电为例,不恰当的地方,还望指点):
模拟场景:我有220V输出的电源插座(Origin)和一部新买的华为MateS手机(Target),但充电器被快递小哥弄丢了......
1.有两个主体,一个是我想要充电的手机,手机支持5V的微型USB接口。
另一个是220V的电源插座,我需要一个中间设备进行变压,输出给手机。
2.核心需求:我要5V的微型USB输出(我需要用一个接口的引用指向一个未实现该接口的类,然而类已经定义好,人家都在用了
我不可能因为个人需求来修改公共类,这也不符合OCP原则嘛),简而言之,我要一个我的接口指向你的类。
3.以上需求显而易见不能随意改变实现类,但是又不能脱离该实现类另起炉灶。于是,充电器(适配器adapter)应运而生!
4.做法:定义一个中间类adapter来提供原始类Origin的服务。
//原始类
public class Origin {
public void OriginMethod(){
System.out.println("origin!");
}
}
//接口,也就是想要引用Origin的接口
public interface Target {
public void OriginMethod();
public void AdapterMethod();
}
//中间类,也就是适配器Adapter
public class Adapter implements Target{
Origin o;
public void AdapterMethod(){
System.out.println("adapter!");
}
public Adapter(Origin o){
this.o=o;
}
public void OriginMethod(){
o.OriginMethod();
}
}
//测试类
public class Test {
public static void main(String[] args) {
Target t = new Adapter(new Origin());
t.AdapterMethod();
t.OriginMethod();
}
}
//输出
adapter!
origin!
还没看明白的童鞋看看专业人士解读:(上图和最后的概述和场景引自疯狂java讲义,希望对你的理解有所帮助)
概述
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
适用性
1.你想使用一个已经存在的类,而它的接口不符合你的需求。 2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口 可能不一定兼容的类)协同工作。 3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行 子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- Cstring中GetBuffer()方法的主要作用
- hdu1517 A Multiplication Game
- Android_07_有序广播及最终广播接收者
- linux中vi编辑器
- 异步复位、同步释放
- 适配器模式
- DHCP的那些事儿
- Android UI 设计——Button 控件
- Java_Properties类实现软件使用次数
- SYSTEMTIME、 time_t、tm 的相互转换
- Java 递归读取文件
- 神马!看电子书,会让记忆力衰退!
- Matlab赋值语句
- 一个多线程程序挂起问题解决