设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1348|回复: 0

Matlab空对象模式

[复制链接]

20

主题

176

金钱

290

积分

入门用户

发表于 2019-9-4 16:33:04 | 显示全部楼层 |阅读模式

在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。

AbstractObject.m
  1. classdef AbstractObject < handle
  2.     methods(Abstract)
  3.         operation(~);
  4.     end
  5. end
复制代码


RealObject.m
  1. classdef RealObject < AbstractObject
  2.     properties
  3.         name
  4.     end
  5.     methods
  6.         function obj = RealObject(name)
  7.             obj.name = name;
  8.         end
  9.         function operation(obj)
  10.             disp("This is object " + obj.name + " operation.");
  11.         end
  12.     end
  13. end
复制代码


NullObject.m
  1. classdef NullObject < AbstractObject
  2.     methods
  3.         function operation(~)
  4.             disp("This is NullObject");
  5.         end
  6.     end
  7. end
复制代码


ObjectFactory.m
  1. classdef ObjectFactory < handle
  2.     properties(Constant)
  3.         names = ["matlab","pattern","design"];
  4.     end
  5.     methods(Static)
  6.         function res = getObject(name)
  7.             if(sum(ObjectFactory.names == name) > 0)
  8.                 res = RealObject(name);
  9.             else
  10.                 res = NullObject();
  11.             end
  12.         end
  13.     end
  14. end
复制代码


test.m
  1. obj1 = ObjectFactory.getObject("matlab");
  2. obj1.operation();
  3. obj2 = ObjectFactory.getObject("null");
  4. obj2.operation();
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表