经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » 设计模式 » 查看文章
Matlab空对象模式 - sw-lab
来源:cnblogs  作者:sw-lab  时间:2019/6/19 8:58:34  对本文有异议

在空对象模式(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();

参考资料:

https://www.runoob.com/design-pattern/null-object-pattern.html

原文链接:http://www.cnblogs.com/usaddew/p/11048850.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号