Я думаю, что в этом случае реализация статического интерфейса является довольно хорошей моделью.Определите ваши классы следующим образом:
classdef ACalculation < handle
methods (Abstract,Public,Static)
[result] = calculate (data);
plot (data, limX, limY);
end
end
classdef Maximum < ACalculation
methods (Public,Static)
function [result] = calculate (data)
%...
end
function plot (data, limX, limY)
%...
end
end
Затем вы можете написать функцию, которая ожидает тип ACalculation
:
function foo(acalc,data)
assert(isa(acalc,'ACalculation'));
acalc.calculate(data);
acalc.plot(data,[100 200]);
end
Затем создайте Maximum
пустой экземпляр ипередать его на foo
:
foo ( Maximum.empty(0), [1 2 3]);
Если вы хотите изменить метод расчета, позвоните
foo ( Minimum.empty(0), [1 2 3]);
Когда вы говорите, что такой шаблон не будет работать, вы думаете, чтоJava / C # / C ++ разработчик.Но в отличие от C ++, где static и virtual ключевое слово не может сосуществовать, Matlab не имеет такого ограничения, потому что все выполняется во время выполнения, а «экземпляр» может быть пустым или массивом n
элементов.