适配器模式
来源:互联网 发布:高见泽俊彦 知乎 编辑:程序博客网 时间:2024/06/01 20:28
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。类图如下:
类的适配器模式:Adapter与Adaptee是继承关系。
对象的适配器模式:Adapter和Adaptee不是继承关系,而是使用委派关系连接到Adaptee类。
举个栗子:
指方为圆:客户接收一个正方体,返还此正方体的内切球。
类图和代码如下:
package adapter;//适配器模式的源角色public class Cube { private double width; public Cube(double width){ this.width = width; } //计算体积 public double calculateVolume(){ return width * width * width; } //计算面积 public double calculateFaceArea(){ return width * width; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; }}
package adapter;//目标接口角色public interface BallIF { /** * 计算面积 */ public double calculateArea(); /** * 计算体积 */ public double calculateVolume(); /** * 半径的取值方法 */ public double getRadius(); /** * 半径的赋值方法 */ public void setRadius(double radius);}
package adapter;//适配器角色public class MagicFinger implements BallIF { private double radius = 0; private static final double PI = 3.14d; private Cube adaptee; public MagicFinger(Cube adaptee){ this.adaptee = adaptee; radius = this.adaptee.getWidth()/2.0d; } @Override public double calculateArea() { return PI * (radius * radius); } @Override public double calculateVolume() { return PI * 4.0d/3.0d * (radius * radius * radius); } @Override public double getRadius() { return radius; } @Override public void setRadius(double radius) { this.radius = radius; }}
适配器模式源码:适配器模式代码demo,欢迎下载
阅读全文
0 0
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 适配器模式
- 外观模式
- Hibernate 核心技术(一)
- Visual Studio 2017 Boost配置
- GetVersionEx()获取系统的版本
- Android Studio提高效率常用插件整理
- 适配器模式
- linux源码安装mysql5.7
- 一图看懂人工智能技术体系
- hibernate 实体状态转移
- 5.4.4 模式的局限性
- Qt自定义控件之------QProgressBar的自定义
- css基础———清除浮动的一些方法及区别
- Github 本周最热的 10 款「机器学习」开源项目 | PaperDaily #27
- Unity3D -- 性能优化(2)(官方教程Diagnosing performance problems using the Profiler window翻译)