时间:2017年08月29日星期二
说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com
教学源码:https://github.com/zccodere/s...
学习源码:https://github.com/zccodere/s...
第一章:适配器模式的简介
1-1 简介
生活中的适配器
翻译软件
插座适配器
适配器模式定义
适配器模式讲将一个类的接口,转换成客户期望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作
适配器模式类图
适配器分类
1.聚合(组合)
定义:采用聚合(组合)方式的适配器成为对象适配器
特点:把“被适配者”作为一个对象聚合到适配器类中,以修改目标接口包装被适配者
2.继承
定义:采用继承方式的称为类适配器
特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配
第二章:适配器模式的实现
2-1 聚合方式
代码编写
1.编写ThreePlug类
package com.myimooc.designpattern.c4adapter;
/**
* @describe 三相插座接口
* @author zc
* @version 1.0 2017-08-29
*/
public interface ThreePlug {
/**
* 使用三相电流供电
*/
void powerWithThree();
}
2.编写GbTwoPlug类
package com.myimooc.designpattern.c4adapter;
/**
* @describe 二相插座接口
* @author zc
* @version 1.0 2017-08-29
*/
public class GbTwoPlug {
/**
* 使用二相电流供电
*/
public void powerWithTwo(){
System.out.println("使用二相电流供电");
}
}
3.编写TwoPlugAdapter类
package com.myimooc.designpattern.c4adapter;
/**
* @describe 二相转三相的插座适配器-聚合方式
* 怎么实现的
* 1.实现目标接口 ThreePlug
* 2.聚合 GbTwoPlug 类到当前适配器类中为成员变量
* 3.把“被适配者”作为一个对象聚合到适配器类中,以修改目标接口包装被适配者
* @author zc
* @version 1.0 2017-08-29
*/
public class TwoPlugAdapter implements ThreePlug {
private GbTwoPlug plug;
public TwoPlugAdapter(GbTwoPlug plug) {
this.plug = plug;
}
@Override
public void powerWithThree() {
System.out.println("通过转换-聚合方式");
plug.powerWithTwo();
}
}
4.编写NoteBook类
package com.myimooc.designpattern.c4adapter;
/**
* @describe 笔记本电脑
* @author zc
* @version 1.0 2017-08-29
*/
public class NoteBook {
/**
* 期望使用三相插座进行充电
*/
private ThreePlug plug;
public NoteBook(ThreePlug plug) {
this.plug = plug;
}
/**
* 使用插座进行充电
*/
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
GbTwoPlug two = new GbTwoPlug();
// 使用二相转三相的适配器
ThreePlug three = new TwoPlugAdapter(two);
// 使用三相插座进行充电
NoteBook nb = new NoteBook(three);
nb.charge();
}
}
2-2 继承方式
代码编码
1.编写TwoPlugAdapterExtends类
package com.myimooc.designpattern.c4adapter;
/**
* @describe 二相转三相的插座适配器-继承方式
* @author zc
* @version 1.0 2017-08-29
*/
public class TwoPlugAdapterExtends extends GbTwoPlug implements ThreePlug {
@Override
public void powerWithThree() {
System.out.println("通过转换-继承方式");
this.powerWithTwo();
}
}
2.修改NoteBook类
package com.myimooc.designpattern.c4adapter;
/**
* @describe 笔记本电脑
* @author zc
* @version 1.0 2017-08-29
*/
public class NoteBook {
/**
* 期望使用三相插座进行充电
*/
private ThreePlug plug;
public NoteBook(ThreePlug plug) {
this.plug = plug;
}
/**
* 使用插座进行充电
*/
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
GbTwoPlug two = new GbTwoPlug();
// 使用二相转三相的适配器
ThreePlug three = new TwoPlugAdapter(two);
// 使用三相插座进行充电
NoteBook nb = new NoteBook(three);
nb.charge();
three = new TwoPlugAdapterExtends();
nb= new NoteBook(three);
nb.charge();
}
}
第三章:适配器模式的总结
3-1 总结
适配器模式是一种编程思想
只要是把不兼容的转化成兼容的、匹配的,我们就叫它适配器
模式的变体
适配器的作用
1.透明:通过适配器,客户端可以调用同一个接口,因而对客户端来说是透明的
这样做更简单、更直接、更紧凑
2.重用:复用了现存的类,解决了现存类和复用环境要求不一致的问题
3.低耦合:将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类,
而无需修改原有代码(遵循开闭原则)
开闭原则:对修改关闭,对扩展开放
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。