摘要:时间年月日星期二说明本文部分内容均来自慕课网。慕课网教学源码学习源码第一章适配器模式的简介简介生活中的适配器翻译软件插座适配器适配器模式定义适配器模式讲将一个类的接口,转换成客户期望的另外一个接口。
时间:2017年08月29日星期二
说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com
教学源码:https://github.com/zccodere/s...
学习源码:https://github.com/zccodere/s...
生活中的适配器
翻译软件 插座适配器
适配器模式定义
适配器模式讲将一个类的接口,转换成客户期望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作
适配器模式类图
适配器分类
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.低耦合:将目标类和适配者类解耦,通过引入一个适配器类重用现有的适配者类, 而无需修改原有代码(遵循开闭原则) 开闭原则:对修改关闭,对扩展开放
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70296.html
时间:2017年08月30日星期三说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:https://github.com/zccodere/s...学习源码:https://github.com/zccodere/s... 第一章:责任链模式简介 1-1 课程简介 课程大纲 什么是责任链模式 如何实现责任链模式 责任链模式如何解耦 责任链模式的应用 案例:...
时间:2017年08月27日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:https://github.com/zccodere/s...学习源码:https://github.com/zccodere/s... 第一章:单例模式简介 1-1 简介 单例模式 概念及应用场合 饿汉模式 懒汉模式 饿汉模式与懒汉模式的区别 什么是设计模式 是一套被反...
摘要:时间年月日星期六说明本文部分内容均来自慕课网。案例介绍饮料机配置模版把水煮沸泡饮料把饮料倒进杯子加调味料第二章模版模式实现基本框架代码编写编写类模版模式抽象基类,为所有子类提供一个算法框架。 时间:2017年09月02日星期六说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:https://github.com/zccodere/s...学习源...
时间:2017年08月31日星期四说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:https://github.com/zccodere/s...学习源码:https://github.com/zccodere/s... 第一章:策略模式简介 1-1 简介 课程大纲 什么是策略模式 策略模式如何实现 策略模式总结篇 实例案例分享 日常生活中的策略 Wor...
摘要:时间年月日星期日说明本文部分内容均来自慕课网。这对所有形态的工厂模式都是重要的这个系统的产品有至少一个的产品族同属于一个产品族的产品是设计成在一起使用的。 时间:2017年08月27日星期日说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:https://github.com/zccodere/s...学习源码:https://github.c...
阅读 1200·2021-11-23 09:51
阅读 1979·2021-10-08 10:05
阅读 2337·2019-08-30 15:56
阅读 1900·2019-08-30 15:55
阅读 2639·2019-08-30 15:55
阅读 2487·2019-08-30 13:53
阅读 3497·2019-08-30 12:52
阅读 1249·2019-08-29 10:57