GOF23设计模式之适配器模式(Adapter)
一、适配器模式概述
将一个类的接口转换成客户可用的另外一个接口。
将原本不兼容不能在一起工作的类添加适配处理类,使其可以在一起工作。
二、适配器模式场景
要想只有USB接口的电脑想使用PS/2接口的键盘,必须使用PS/2转USB的适配器。
三、适配器模式示例
(1)定义USB接口
/**
* 客户所期待的接口(相当于USB接口)
* @author CL
*
*/
public interface Target { void handleReq(); }
(2)定义PS/2键盘
/**
* 被适配的类 (相当于例子中的PS/2键盘)
* @author CL
*
*/
public class Adaptee { public void request() {
System.out.println("我是PS/2接口的键盘!");
} }
(3)定义PS/2转USB的适配器
a. 类适配器
/**
* 适配器(相当于可以将PS/2接口转换成USB接口的适配器本身)
* 类适配器方式
* @author CL
*
*/
public class Adapter extends Adaptee implements Target { public void handleReq() {
super.request();
} }
测试:
/**
* 客户端类(相当于只能识别USB接口键盘的电脑)
* @author CL
*
*/
public class Client { public void test(Target t) {
t.handleReq();
} public static void main(String[] args) {
Client c = new Client();
Adaptee a = new Adaptee(); Target t = new Adapter(); //类适配器方式 c.test(t);
} }
控制台输出:
我是PS/2接口的键盘!
b.对象适配器
/**
* 适配器(相当于可以将PS/2接口转换成USB接口的适配器本身)
* 对象适配器方式,使用了组合的方式跟被适配对象整合
* @author CL
*
*/
public class Adapter implements Target { private Adaptee adaptee; public Adapter(Adaptee adaptee) {
this.adaptee = adaptee;
} public void handleReq() {
adaptee.request();
} }
测试:
/**
* 客户端类(相当于只能识别USB接口键盘的电脑)
* @author CL
*
*/
public class Client { public void test(Target t) {
t.handleReq();
} public static void main(String[] args) {
Client c = new Client();
Adaptee a = new Adaptee(); Target t = new Adapter3(); //类适配器方式 c.test(t);
} }
控制台输出:
我是PS/2接口的键盘!
GOF23设计模式之适配器模式(Adapter)的更多相关文章
- GOF23设计模式之适配器模式
GOF23设计模式之适配器模式 结构型模式: 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题. 分类:适配器模式.代理模式.桥接模式.装饰模式.组合模式.外观模式. ...
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...
- 8.3 GOF设计模式二: 适配器模式 Adapter
GOF设计模式二: 适配器模式 Adapter 为中国市场生产的电器,到了美国,需要有一个转接器才能使用墙上的插座,这个转接 器的功能.原理?复习单实例模式 SingleTon的三个关键点 ...
- 怎样让孩子爱上设计模式 —— 7.适配器模式(Adapter Pattern)
怎样让孩子爱上设计模式 -- 7.适配器模式(Adapter Pattern) 标签: 设计模式初涉 概念相关 定义: 适配器模式把一个类的接口变换成client所期待的还有一种接口,从而 使原本因接 ...
- 【GOF23设计模式】适配器模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_适配器模式.对象适配器.类适配器.开发中场景 适配器模式 笔记本电脑只有USB接口,新买的键盘是PS2接口的,需要用适 ...
- 二十四种设计模式:适配器模式(Adapter Pattern)
适配器模式(Adapter Pattern) 介绍将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.示例有一个Message实体类 ...
- 【设计模式】适配器模式 Adapter Pattern
适配器模式在软件开发界使用及其广泛,在工业界,现实中也是屡见不鲜.比如手机充电器,笔记本充电器,广播接收器,电视接收器等等.都是适配器. 适配器主要作用是让本来不兼容的两个事物兼容和谐的一起工作.比如 ...
- Java设计模式之适配器模式(Adapter)
转载:<JAVA与模式>之适配器模式 这个总结的挺好的,为了加深印象,我自己再尝试总结一下 1.定义: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法 ...
- JavaScript设计模式 Item9 --适配器模式Adapter
适配器模式(转换器面模式),通常是为要使用的接口,不符本应用或本系统使用,而需引入的中间适配层类或对象的情况. 适配器模式的作用是解决两个软件实体间的接口不兼容的问题. 一.定义 适配器模式(Adap ...
随机推荐
- Java进阶2 数组内存和对象的内存管理知识
Java进阶2 数组内存和对象的内存管理知识 20131028 前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏 ...
- centos静默安装oracle12c
配置系统和安装所需软件包 关闭selinux 临时关闭(不用重启) [root@SVR-3-125 ~]# setenforce 0 修改配置文件(需要重启): 将SELINUX=enforcing ...
- Spark安装和简单示例
spark的安装 先到官网下载安装包 注意第二项要选择和自己hadoop版本相匹配的spark版本,然后在第4项点击下载.若无图形界面,可用windows系统下载完成后传送到centos中. 本例中安 ...
- CF910A
题解: 简单dp dp[i]=min(dp[i-j])+1; 代码: #include<bits/stdc++.h> using namespace std; ; int n,m,dp[N ...
- Oracle 对比两张表不一样 的数据
闲来无事,更一片博客,前几天有一个项目中有一个需求,用户通过excel导入数据,由于是通用的导入,所以导入的列的类型都为varchar,所以需要建一张中间表,使其列都为varchar类型,然后通过存储 ...
- mybatis入参方式和缓冲
1.mybatis入参方式 @Param注解参数(注解) 封装成对象入参 public int updatePassword(@Param("id")int id,@Param(& ...
- Kafka 单节点多Kafka Broker集群
Kafka 单节点多Kafka Broker集群 接前一篇文章,今天搭建一下单节点多Kafka Broker集群环境. 配置与启动服务 由于是在一个节点上启动多个 Kafka Broker实例,所以我 ...
- redis事务浅析
事务可以简单理解为:把多件事当做一件事情处理,要么一起成功,要么一起失败.在Spring中可以配置一个事务管理器,然后在要进行事务处理的方法上添加@Transactional注解就可以了. 对于red ...
- 我也说说Emacs吧(7) - lisp基础
lisp基础 Lisp是仅次于Fortran的第二古老的著名计算机语言. Lisp从一开始就与众不同的一点在于,它是基于S-表达式的语言.也就是说,代码和数据是用同一种方式表达出来的. S-表达式,我 ...
- artDialog的使用
用法一:github上下载包:https://github.com/aui/artDialog seajs方法使用 <!doctype html> <h ...