java 适配器模式 详解(带电源插座适配 例子)
来源:互联网 发布:实体店怎么加入淘宝 编辑:程序博客网 时间:2024/04/30 00:46
概述:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
类型:结构型模式。
类图:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
类型:结构型模式。
类图:
适用性:
1、你想使用一个已经存在的类,而它的接口不符合你的需求。
2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
参与者
1、Target (Three Hole)
定义Client使用的与特定领域相关的接口。
2、Client (Hotel)
与符合Target接口的对象协同。
3、Adaptee (TwoHole)
定义一个已经存在的接口,这个接口需要适配。
4、Adapter (Three_Swith_Two_Adapter)
对Adaptee的接口与Target接口进行适配。
例子: 使用 三孔插孔 转换为 二口插孔的例子。 假如你外出旅游带的手机充电器是二孔插头,但是入住的旅店只有三孔插孔(不考虑三孔可以插二孔的情况),,,这时候你下楼 买了一个 三孔转化为二孔的适配器
1、你想使用一个已经存在的类,而它的接口不符合你的需求。
2、你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
参与者
1、Target (Three Hole)
定义Client使用的与特定领域相关的接口。
2、Client (Hotel)
与符合Target接口的对象协同。
3、Adaptee (TwoHole)
定义一个已经存在的接口,这个接口需要适配。
4、Adapter (Three_Swith_Two_Adapter)
对Adaptee的接口与Target接口进行适配。
例子: 使用 三孔插孔 转换为 二口插孔的例子。 假如你外出旅游带的手机充电器是二孔插头,但是入住的旅店只有三孔插孔(不考虑三孔可以插二孔的情况),,,这时候你下楼 买了一个 三孔转化为二孔的适配器
package com.zq.designpattern.adatper;/** * Created by zhengshouzi on 2015/10/26. *///三孔插座的标准interface ThreeHole{ void doSomething();}//三孔插座的实现class ThreeHoleImpl implements ThreeHole{ @Override public void doSomething() { System.out.println("使用 三孔 充电"); }}//两孔插座的标准interface TwoHole{ void doSomething();}//两孔插座的实现class TwoHoleImpl implements TwoHole{ @Override public void doSomething() { System.out.println("使用 二孔 充电"); }}//三孔 转 二孔的适配器class Three_Swith_Two_Adapter implements ThreeHole { private TwoHole twoHole; //此适配器 必须要有 一个二孔的插口才能工作 public Three_Swith_Two_Adapter(TwoHole twoHole){ this.twoHole = twoHole; } @Override public void doSomething() { twoHole.doSomething(); }}class Hotel{ //旅馆默认是三孔的充电器 private ThreeHole threeHole = new ThreeHoleImpl(); //给旅馆加上适配器 public void setSwitcher(ThreeHole threeHole){ this.threeHole = threeHole; } //充电 public void charge(){ threeHole.doSomething(); }}public class AdapterPattern { public static void main(String[] args) { //找了一个旅馆住下 Hotel hotel = new Hotel(); //如果你是三孔的充电器,开始充电,直接充电 hotel.charge(); //如果你带的是二孔的充电器,拿出二孔的充电器,发现没法充电 TwoHole twoHole = new TwoHoleImpl(); //这时候你下楼买一个 三孔 转换 二孔的适配器 //适配器的构造函数,说我需要一个二孔的插头插在我上面 ThreeHole threeHole = new Three_Swith_Two_Adapter(twoHole); //这个时候将适配器插在旅馆的 三孔排插上 hotel.setSwitcher(threeHole); //开始充电 hotel.charge(); }}
看了这个代码,你可以试试自己写一个把 二孔转化为 三孔的适配器。
0 0
- java 适配器模式 详解(带电源插座适配 例子)
- Adapter 适配器模式笔记--java实现(电源适配器示例)
- 适配器模式(adapter pattern)(插座转换)
- 详解 JAVA 适配模式 和 接口适配器
- 详解 JAVA 适配模式和 接口适配器
- java 外观模式 详解 带酒店管理例子
- 电源插座使用注意
- ArduinoYun的电源插座
- 适配器模式 个人理解+JAVA 小例子
- 适配器模式在JAVA IO中的例子
- 适配器模式(Java)
- 适配器模式(Java)
- 适配器模式例子
- (八)适配器模式详解
- (八)适配器模式详解
- (八)适配器模式详解
- (八)适配器模式详解
- (八)适配器模式详解
- 063.#IfDef 使用宏来控制调试信息
- 第九周项目一~~~猴子选大王(数组版)
- pugixml的简单使用[转]
- tomcat7用户管理
- 第9周—项目1 猴子选大王(数组版)
- java 适配器模式 详解(带电源插座适配 例子)
- Android Lint 检查规则的定制(基本篇)
- 第九周项目1猴子选大王
- 062.#IfDef 使用宏来进行条件编译
- HDU 2476 String painter(区间DP)
- linux 安装bcrypt
- Linux(CentOS)下,下载安装Nginx并配置
- 轻松学习之一--Objective-C消息转发
- 保持宽高比的自定义View