【发布时间】:2015-07-18 13:03:30
【问题描述】:
根据Matlab documentation,要创建单例设计模式,您需要在静态函数中为单例对象实例设置persistent 变量,即:
classdef (Sealed) SingleInstance < handle
methods (Access = private)
function obj = SingleInstance
end
end
methods (Static)
function singleObj = getInstance
persistent localObj
if isempty(localObj) || ~isvalid(localObj)
localObj = SingleInstance;
end
singleObj = localObj;
end
end
end
“破坏”单例实例几乎是不可能的。我尝试过clear SingleInstance、clear getInstance()、clear SingleInstance.getInstance()、clear functions、clear variables 和其他组合。 SingleInstance 类的 getInstance() 静态方法中的 localObj 持久变量的唯一方法是调用 clear all。
在调用我的 Matlab OO 应用程序之前,我可以调用 clear all。但是,我使用的是 Matlab 单元测试基础设施,并且有一些单元测试我想测试不同的实例化单例类的方法。但是,为此我需要调用 clear all,这会使 Matlab 单元测试基础架构停止工作。
有没有人知道一种无需调用clear all 就可以在 Matlab 类的静态方法中清除持久变量的方法?或者,换一种方式,有没有人知道如何在不使用persitent 变量的情况下实现单例设计模式?或者,至少,如何在单元测试中调用clear all 而不会破坏单元测试基础架构?
【问题讨论】:
标签: matlab unit-testing oop singleton persistent