Matlab适配器模式
适配器模式是连接两个不兼容接口的桥梁,主要分为三种:类适配器、对象适配器以及接口适配器,本文根据https://blog.csdn.net/u012359453/article/details/79165080所给的例子使用matlab语言对三种适配器进行实现。
已有的接口和类(AC220V):
IAC220V.m
classdef IAC220V < handle
methods(Abstract)
getAC220V(~);
end
end
AC220V.m
classdef AC220V < IAC220V
properties
isAC = true;
voltage = 220;
end
methods
function obj = AC220V(voltage,isAC)
obj.isAC = isAC;
obj.voltage = voltage;
end
function [voltage,isAC] = getAC220V(obj)
voltage = obj.voltage;
isAC = obj.isAC;
end
end
end
目标接口:(DC5V,注意两者的方法签名是不同的)
classdef IDC5V < handle
methods(Abstract)
getDC5V(~);
end
end
类适配器(将AC220V转化成DC5V):
classdef ClassAdapter < AC220V & IDC5V
methods
function obj = ClassAdapter(voltage,isAC)
obj = obj@AC220V(voltage,isAC);
end
function [new_voltage,new_isAC] = getDC5V(obj)
[voltage,isAC] = obj.getAC220V();
new_voltage = 0;
new_isAC = false;
if(isAC)
new_voltage = voltage / 44;
new_isAC = false;
end
end
end
end
对象适配器:
classdef ObjAdapter < IDC5V
properties
pAC220
end
methods
function obj = ObjAdapter(pAC220)
if(metaclass(pAC220) <= ?IAC220V)
obj.pAC220 = pAC220;
end
end
function [new_voltage,new_isAC] = getDC5V(obj)
new_voltage = 0;
new_isAC = false;
if(~isempty(obj.pAC220))
[voltage,isAC] = obj.pAC220.getAC220V();
if(isAC)
new_voltage = voltage / 44;
new_isAC = false;
end
end
end
end
end
接口适配器:
IDCOutput.m (定义通用输出接口)
classdef IDCOutput < handle
methods(Abstract)
getDC5V(~);
getDC12V(~);
end
end
IAdapter.m(定义默认适配器接口)
classdef IAdapter < IDCOutput
properties
power
end
methods
function obj = IAdapter(power)
obj.power = power;
end
function [voltage,isAC] = getDC5V(~)
voltage = 0;
isAC = false;
end
function [voltage,isAC] = getDC12V(~)
voltage = 0;
isAC = false;
end
end
end
AC220VAdapter.m (定义具体适配器方法,AC220V输入为例)
classdef AC220VAdapter < IAdapter
methods
function obj = AC220VAdapter(pAC220V)
obj = obj@IAdapter(pAC220V);
end
function [new_voltage,new_isAC] = getDC5V(obj)
new_voltage = 0;
new_isAC = false;
if(~isempty(obj.power))
[voltage,isAC] = obj.power.getAC220V();
if(isAC)
new_voltage = voltage / 44;
new_isAC = false;
end
end
end
end
end
测试代码
a = ClassAdapter(220,true);
disp(a.getDC5V()); b = ObjAdapter(AC220V(223,true));
disp(b.getDC5V()); c = AC220VAdapter(AC220V(221,true));
disp(c.getDC5V())
Matlab适配器模式的更多相关文章
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab slice方法和包络法绘制三维立体图
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab 高斯_拉普拉斯滤波器处理医学图像
前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...
- MATLAB中绘制质点轨迹动图并保存成GIF
工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...
- PHP设计模式(七)适配器模式(Adapter For PHP)
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 如下图(借图): // 设置书的接口 // 书接口 interface BookI ...
- linux下配置matlab运行环境(MCR)
在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...
- EMD分析 Matlab 精华总结 附开源工具箱(全)
前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ ...
- Atitit MATLAB 图像处理 经典书籍attilax总结
Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...
- Atitit MATLAB 图像处理attilax总结
Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...
随机推荐
- SLF4J使用,slf4j-api、slf4j-log4j12以及log4j的关系
SLF4J不同于其他日志类库,与其它有很大的不同.SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer ...
- 自顶向下深入分析Netty(六)--Channel总述
自顶向下深入分析Netty(六)--Channel总述 自顶向下深入分析Netty(六)--Channel源码实现 6.1 总述 6.1.1 Channel JDK中的Channel是通讯的载体,而N ...
- 【转】干货篇:手机绕过BL锁9008模式强刷
<ignore_js_op> 高通QPST线刷其实就是利用高通芯片自带的9008端口,将手机系统内的所有分区的镜像文件,直接刷写手机.这个刷机方式比REC卡刷和fastboot线刷,更底层 ...
- sql server数据库备份单个表的结构和数据生成脚本【转】
1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...
- ssh scp 上传下载文件
scp username@servername:/path/filename 例如scp codinglog@192.168.0.101:/home/kimi/test.txt 把192.168. ...
- 删除DB2实例下的数据库
db2ilist 查看所有实例 db2 get instance 查看当前连接的实例 db2 list db directory 查看当前实例下连接的数据库 ==================== ...
- IIS连接数、并发连接数、最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数详解
IIS:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池的最大工作进程数详解 iis性能指标的各种概念:连接数.并发连接数.最大并发工作线程数.应用程序池的队列长度.应用程序池 ...
- 每日题解: 两数之和 & 有效的括号
- SpringMVC request 得到文件路径
1.java中的路径 File directory = new File("abc"); // 对于getCanonicalPath()函数,“."就表示当前的文件夹,而 ...
- 泡泡一分钟:Real-Time Vehicle Detection from Short-Range Aerial Image with Compressed MobileNet
张宁 Real-Time Vehicle Detection from Short-Range Aerial Image with Compressed MobileNet链接:https://pan ...