Java设计模式之—Adapter模式(适配器模式)
时间:2019-04-20
本文章向大家介绍Java设计模式之—Adapter模式(适配器模式),主要包括Java设计模式之—Adapter模式(适配器模式)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Java设计模式之—Adapter模式(适配器模式)
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
Demo1
通过继承去实现适配器功能。
Usb接口类
public interface Usb {
void isUsb();
}
Useber实现类(实现Usb接口)
public class Useber implements Usb {
@Override
public void isUsb() {
System.out.println("USB口");
}
}
Ps2接口类
public interface Ps2 {
void isPs2();
}
Adapter类(继承Usber类,实现Ps2类)
public class Adapter extends Useber implements Ps2 {
@Override
public void isPs2() {
isUsb();
}
}
Clienter类(测试类)
public class Clienter {
public static void main(String[] args) {
Ps2 ps2 = new Adapter();
ps2.isPs2();//结果:USB口
}
}
Demo2
通过组合来实现适配器功能。
Usb接口类
public interface Usb {
void isUsb();
}
Useber实现类(实现Usb接口)
public class Useber implements Usb {
@Override
public void isUsb() {
System.out.println("USB口");
}
}
Ps2接口类
public interface Ps2 {
void isPs2();
}
Adapter实现类(实现Ps2接口类)
public class Adapter implements Ps2{
private Usb usb;
public Adapter(Usb usb) {
this.usb=usb;
}
@Override
public void isPs2() {
usb.isUsb();
}
}
Clienter实现类(测试类)
public class Clienter {
public static void main(String[] args) {
Ps2 p = new Adapter(new Usber());
p.isPs2();//结果:USB口
}
}
Demo3
通过抽象类来实现适配,这种适配稍别于上面所述的适配。
A接口类
public interface A {
void a();
void b();
void c();
void d();
void e();
void f();
}
Adapter实现类(实现A接口)
public abstract class Adapter implements A {
public void a() {
}
public void b() {
}
public void c() {
}
public void d() {
}
public void e() {
}
public void f() {
}
}
Ashili类(继承Adapter实现类)
public class Ashili extends Adapter {
public void a() {
System.out.println("实现A方法被调用");
}
public void d() {
System.out.println("实现d方法被调用");
}
}
Clienter类(测试类)
public class Clienter {
public static void main(String[] args) {
A a = new Ashili();
a.a();//结果:实现A方法被调用
a.d();//结果:实现d方法被调用
}
}
- Elasticsearch聚合 之 Date Histogram聚合
- Elasticsearch聚合 之 Terms
- Elasticsearch聚合初探——metric篇
- AngularJS API之$injector ---- 依赖注入
- AngularJS API之extend扩展对象
- AngularJS API之equal比较对象
- Elasticsearch之_default_—— 为索引添加默认映射
- Elasticsearch 动态映射——自动检测
- Elaticsearch REST API常用技巧
- C++拷贝构造函数
- 记录安装oracle的那些事(一)之oracle我很大
- Elasticsearch 连接查询
- 小程序加戏成功!变身游戏成新版微信最大主角,用户玩得不亦乐乎
- 堆实例
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- PAT (Basic Level) Practice (中文)1036 跟奥巴马一起编程 (15 分)
- PAT (Advanced Level) Practice 1024 Palindromic Number (25 分)
- Flink 连接 hive 解决 java.net.UnknownHostException
- PAT (Advanced Level) Practice 1147 Heaps (30 分)
- Java自动化测试(app自动化环境搭建 31)
- PAT (Basic Level) Practice (中文)1038 统计同成绩学生 (20 分)
- 数据结构题集(严书)串 常见习题代码
- PAT (Basic Level) Practice (中文)1040 有几个PAT (25 分)
- 201909-4ccf计算机职业资格认证考试 第四题 推荐系统
- 【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
- PAT (Basic Level) Practice (中文)1042 字符统计 (20 分)
- Pytorch 中的 5 个非常有用的张量操作
- k-近邻算法实现数字识别
- 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】
- vue中子组件使用$emit传值的种种情况