首页 > 解决方案 > OOP 设计模式/从文件或 API 中读取信息?

问题描述

我有 (x2) 方法来获取我的对象的信息:

  1. 从存储在光盘上的文件中读取
  2. 通过应用程序的 API 访问制作文件的应用程序

获取信息后,我将有以下方法:

如果我更改信息,则不必与我收到信息的方式相同。因此我可以:

我不会有其他方法来输入/输出数据(例如 API 和文件涵盖所有选项)。

代码将在 Matlab 中,因此我无法轻松访问枚举类型和其他一些不错的编程功能,因此我很想使用设计模式而不是类中的开关

问题

什么是适合这个问题的设计模式?

我应该使用设计模式并编写几个类来完成这项工作,还是只编写一个带有文件API开关的类?

标签: matlaboopdesign-patterns

解决方案


允许多种形式读取数据的一种合乎逻辑的方法是使用多种形式的构造函数(或read方法):

classdef DataObject
   %...
   methods
      function obj = DataObject(fname)
         if nargin==1
            % read data from file fname
            %...
         else
            % read data through an API
            %...
         end
      end
   end
end

你可以做

obj1 = DataObject;                 % Reads through API
obj2 = DataObject('somefile.txt'); % Reads from file

类似的事情可能适用于write方法。


推荐阅读