博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matlab适配器模式
阅读量:3967 次
发布时间:2019-05-24

本文共 2925 字,大约阅读时间需要 9 分钟。

适配器模式是连接两个不兼容接口的桥梁,主要分为三种:类适配器、对象适配器以及接口适配器,本文根据所给的例子使用matlab语言对三种适配器进行实现。

已有的接口和类(AC220V):

IAC220V.m

classdef IAC220V < handle   methods(Abstract)       getAC220V(~);   endend

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    endend

目标接口:(DC5V,注意两者的方法签名是不同的)

classdef IDC5V < handle    methods(Abstract)       getDC5V(~);   endend

类适配器(将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    endend

对象适配器:

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    endend

接口适配器:

IDCOutput.m (定义通用输出接口)

classdef IDCOutput < handle    methods(Abstract)        getDC5V(~);        getDC12V(~);    endend

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    endend

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    endend

测试代码

a = ClassAdapter(220,true);disp(a.getDC5V()); b = ObjAdapter(AC220V(223,true));disp(b.getDC5V()); c = AC220VAdapter(AC220V(221,true));disp(c.getDC5V())

转载地址:http://rmkki.baihongyu.com/

你可能感兴趣的文章
Ubuntu登录管理员账户时,输入密码后一直在登录界面循环
查看>>
Linux下的定时器以及POSIX定时器:timer_settime()
查看>>
POSIX定时器timer_create()以及线程中的gettid() 和pthread_self()
查看>>
c /c++中日期和时间的获取:strftime()函数
查看>>
C语言 回调函数
查看>>
c语言swap(a,b)值交换的4种实现方法
查看>>
c 排序 汇总
查看>>
C 二维数组的动态申请与释放
查看>>
C/C++中产生随机数(rand和srand的用法)
查看>>
c/c++ 中的 struct和typedef struct
查看>>
C++中class类 的 构造函数、析构函数
查看>>
C++小知识点
查看>>
【转载】zedboard中PL_GPIO控制(8个sw、8个leds)
查看>>
zedboard烧写程序到FLASH,用于QSPI Flash启动
查看>>
软件工程师,你必须知道的20个常识
查看>>
常用STL算法2_查找
查看>>
常用STL算法3_排序
查看>>
常用STL算法4_拷贝和替换
查看>>
常用STL算法5_算术和生成
查看>>
常用STL算法6_集合
查看>>