Matlab中实现类属性仅在首次创建类实例时初始化
背景描述: 在自定义类中,需要定义一些属性(标志位)用于触发某些方法,标志位只需要在类对象第一次实例化时赋初值,之后的值需要在特定的地方设置。怎样保证在不同实例中,标志位的值仅在特定的时候改变,其他时候保持不变,且不随实例的创建而反复初始化。
解决方案: 首先,标志位的值是需要在不通实例中共享的,这里使用单例模式;其次,标志位只需要在类实例首次创建时初始化一次,这里使用静态变量的方法。
classdef Myclass < handle
properties
FirstFlag; % 首次标志
AFlag; % 标志位
BFlag; % 标志位
CFlag; % 标志位
end
% 创建单例模式
methods (Static)
function obj = getInstance()
% 创建静态变量
persistent instance;
if isempty(instance)
instance = Myclass();
end
obj = instance;
end
end
methods
function obj = ChannelPro()
% 构造函数
end
function SetData(obj)
% 第一次被访问时赋值
if isempty(obj.FirstFlag)
obj.AFlag = xxx;
obj.BFlag = xxx;
obj.CFlag = xxx;
obj.FirstFlag = 1;
end
end
end