Matlab中实现类属性仅在首次创建类实例时初始化

[复制链接]
发表于 2024-10-12 07:00:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
配景描述: 在自界说类中,需要界说一些属性(标志位)用于触发某些方法,标志位只需要在类对象第一次实例化时赋初值,之后的值需要在特定的地方设置。怎样包管在不同实例中,标志位的值仅在特定的时间改变,其他时间保持不变,且不随实例的创建而反复初始化。
解决方案: 首先,标志位的值是需要在不通实例中共享的,这里使用单例模式;其次,标志位只需要在类实例首次创建时初始化一次,这里使用静态变量的方法。
  1. classdef Myclass < handle
  2.     properties
  3.        FirstFlag;    % 首次标志
  4.        AFlag;        % 标志位                                 
  5.        BFlag;        % 标志位                        
  6.        CFlag;        % 标志位
  7.     end
  8.      % 创建单例模式
  9.     methods (Static)
  10.         function obj = getInstance()
  11.             % 创建静态变量
  12.             persistent instance;
  13.             if isempty(instance)
  14.                 instance = Myclass();
  15.             end
  16.             obj = instance;
  17.         end
  18.     end
  19.     methods
  20.         function obj = ChannelPro()
  21.             % 构造函数
  22.         end
  23.         function  SetData(obj)   
  24.             % 第一次被访问时赋值
  25.             if isempty(obj.FirstFlag)
  26.                 obj.AFlag = xxx;                                      
  27.                 obj.BFlag = xxx;                                 
  28.                 obj.CFlag = xxx;
  29.                 obj.FirstFlag = 1;
  30.             end
  31.           end
  32.       end
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表