java23种设计模式之三: 适配器模式
一.适配器模式
就是个通过一个中间件转化,可以将不匹配的两件事整合到一起,把不匹配变的匹配。
二.适配器分类
1.类适配器
2.对象适配器
三. 适配器的3种组成
1.类适配器组成
1.2个接口 A,B ,分别定义2种不同的方法
2.1个实现类C,实现A接口,并重写方法
3.适配类继承C 并实现B接口
2.对象适配器
1.2个接口 A,B ,分别定义2种不同的方法
2.1个实现类C,实现A接口,并重写方法,同时定义B接口为该类的属性,通过构造方法将B接口传入赋值
3.B接口的实现类
3.接口适配器
1.A接口中有10 个方法
2.抽象类实现A接口,重写A接口中任意方法
3.实现类来完成具体细节
四.应用场景
适配器模式其核心是将2个或多个完全没有关联的接口通过一个中间类或者接口的方式关联在一起,其目的是为了调用的方便。
类适配器:利用多态的方式来提高面向对象模式来实现类适配器,在编程中提高了解耦合的特点
对象适配器:通过类属性的方式来实现对象适配器,虽然其中也利用了接口的多态,但是这种方式的耦合度高,个人不建议这样用
接口适配器:假如有个A接口中有10+个方法,我们只需要重写其中的1个方法,此时就需要一个抽象类全部空实现这个大的抽象类,然后再通过子类继承父类的方式,可以重写
父类中我们需要的方法即可
五.具体实现过程
1.类适配器实现代码
/**
* USB接口
* @author zhao
*
*/
public interface USB {
public void USB();
} /**
* typeC接口
* @author zhao
*
*/
public interface TypeC {
public void typeC();
} /**
* typeC接口的实现类
* @author zhao
*
*/
public class TypeCImpl implements TypeC{ @Override
public void typeC() {
System.out.println("...C...接口...");
} } /**
* 适配器类
* @author zhao
*
*/
public class Adapter extends TypeCImpl implements USB{ @Override
public void USB() {
System.out.println("USB 转换成 TypeC 接口...");
typeC();
}
} //类适配器_测试类代码
public class MainTest {
public static void main(String[] args) {
USB adapter = new Adapter();
adapter.USB();
}
}
// 测试类代码
public class MainTest {
public static void main(String[] args) {
USB adapter = new Adapter();
adapter.USB();
}
}
2.对象类适配器
/**
* USB接口
* @author zhao
*
*/
public interface USB {
public void USB();
} /**
* typeC接口
* @author zhao
*
*/
public interface TypeC {
public void typeC();
}
/**
* typeC接口的实现类
* @author zhao
*
*/
public class TypeCImpl implements TypeC{ @Override
public void typeC() {
System.out.println("...C...接口...");
} }
/**
* 对象类适配器
* @author zhao
*
*/
public class AdapterObject implements USB{ private TypeC typeC; public AdapterObject(TypeC typeC){
this.typeC = typeC;
}
@Override
public void USB() {
System.out.println("...obj...convers");
typeC.typeC();
}
}
public class MainTest {
public static void main(String[] args) {
TypeC c = new TypeCImpl();
USB adapterObj = new AdapterObject(c);
adapterObj.USB();
}
}
// 测试类代码
public class MainTest {
public static void main(String[] args) {
TypeC c = new TypeCImpl();
USB adapterObj = new AdapterObject(c);
adapterObj.USB();
}
}
3.接口类适配器
/**
* 接口类A
* @author pengbo.zhao
*
*/
public interface AdapterInterface {
void test0();
void test1();
void test2();
void test3();
void test4();
void test5();
void test6();
void test7();
void test8();
void test9();
} /**
* 抽象类全部空实现
* @author pengbo.zhao
*
*/
public abstract class AdapterInter implements AdapterInterface{ @Override
public void test0() {
// TODO Auto-generated method stub
} @Override
public void test1() {
// TODO Auto-generated method stub
}
@Override
public void test2() {
// TODO Auto-generated method stub
}
@Override
public void test3() {
// TODO Auto-generated method stub
}
@Override
public void test4() {
// TODO Auto-generated method stub
}
@Override
public void test5() {
// TODO Auto-generated method stub
}
@Override
public void test6() {
// TODO Auto-generated method stub
}
@Override
public void test7() {
// TODO Auto-generated method stub
}
@Override
public void test8() {
// TODO Auto-generated method stub
}
@Override
public void test9() {
// TODO Auto-generated method stub
}
} /**
* 适配器实现类,可以重写抽象类中的任意方法
* @author pengbo.zhao
*
*/
public class AdapterImpl extends AdapterInter{ @Override
public void test0() {
System.out.println("... 适配器接口...0");
} @Override
public void test3() {
System.out.println("... 适配器接口...3");
}
}
java23种设计模式之三: 适配器模式的更多相关文章
- java23种设计模式—— 一、设计模式介绍
Java23种设计模式全解析 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式--四.原型模 ...
- java23种设计模式——八、组合模式
目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式--四.原型模式 java23种设计模式-- ...
- java23种设计模式——七、桥接模式
原文地址:https://www.cnblogs.com/chenssy/p/3317866.html 源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 j ...
- java23种设计模式 (转)
文章在:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 随着自己的开发经验增加以及自己做了很多的 大专栏 jav ...
- java23种设计模式——四、原型模式
源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...
- java23种设计模式——五、建造者模式
源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...
- java23种设计模式详解(转)
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 学习java23种设计模式自我总结
首先先做个广告,以前看过@maowang 这位大神转的Java开发中的23种设计模式详解(转) ,但是看了之后都忘差不多了, 所以,开个帖子边学习边自我总结(纯手敲).一直以来像这种需要长久的运动,真 ...
- java23种设计模式等等。。
23种设计模式http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 提升Java代码性能和安全性https://blog ...
随机推荐
- Linux NAPI处理流程分析
2017-05-10 今天重点对linux网络数据包的处理做下分析,但是并不关系到上层协议,仅仅到链路层. 之前转载过一篇文章,对NAPI做了比较详尽的分析,本文结合Linux内核源代码,对当前网络数 ...
- MapReduce学习笔记
一.MapReduce概述 MapReduce 是 Hadoop 的核心组成, 是专用于进行数据计算的,是一种分布式计算模型.由Google提出,主要用于搜索领域,解决海量数据的计算问题. MapRe ...
- Linux下修改.bash_profile 文件改变PATH变量的值
Linux中含有两个重要的文件 /etc/profile和$HOME/.bash_profile 每当系统登陆时都要读取这两个文件,用来初始化系统所用到的变量,其中/etc/profile是超级用户所 ...
- 如何制作一款HTML5 RPG游戏引擎——第二篇,烟雨+飞雪效果
今天我们来实现烟雨+飞雪效果.首先来说,一款经典的RPG游戏难免需要加入天气的变化.那么为了使我们的RPG游戏引擎更完美,我们就只好慢慢地实现它. 本文为该系列文章的第二篇,如果想了解以前的文章可以看 ...
- 简单认识TCP/IP协议
HTTP协议—— 简单认识TCP/IP协议 本文转自: https://www.cnblogs.com/roverliang/p/5176456.html 大学没读计算机专业,所以很多的专业知识都 ...
- ACM零散知识
定理与方法专区: 1.两点间的曼哈顿距离如果为偶数,那么两点间可以走偶数步到达 2.求小于等于n 的素数的个数.(即欧拉函数) 100=(2^2)*(5^2) num[100]=(2+1)*(2 ...
- Python中的None与Null(空字符)的区别
参考自 Python中的None与空字符(NULL)的区别 - CSDN博客 http://blog.csdn.net/crisschan/article/details/70312764 首先了解p ...
- centos7编译安装Python3.6(与2.7并存)
首先去官网下载python3.6 https://www.python.org/ 环境准备:#yum install openssl-devel bzip2-devel expat-devel gdb ...
- Mysql中int和varchar类型
int类型: int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int ------- in ...
- 189. Rotate Array(两次反转)
DescriptionHintsSubmissionsDiscussSolution Pick One Rotate an array of n elements to the right by ...