SIngleton implementation without persistent variables

35 ビュー (過去 30 日間)
Rohan
Rohan 2024 年 8 月 28 日
コメント済み: Rohan 2024 年 8 月 29 日
Hi,
I have a handle class with a singleton implementation that uses persistent variables.
classdef MyHandler < handle
properties
...
...
...
end
methods(Access=protected)
function obj = MyHandler()
%Constructor logic
end
end
methods(Static)
function inst = instance()
persistent obj;
if isempty(obj)
obj = MyPackage.MyHandler();
end
inst = obj;
end
end
end
Is there a way to implement the same functionality without usage of persistent variables ? I am trying to generate C code from a system object that uses this handle class.

回答 (1 件)

Malay Agarwal
Malay Agarwal 2024 年 8 月 28 日
編集済み: Malay Agarwal 2024 年 8 月 28 日
Hi @Rohan,
You can create a singleton class without using persistent variables by defining the instance as a constant property. I have attached an example class to the answer. You can verify that the class indeed behaves like a singleton:
% Create two objects
obj = singleton.getInstance
obj =
singleton with properties: x: 5 y: "Hello"
obj1 = singleton.getInstance
obj1 =
singleton with properties: x: 5 y: "Hello"
% The two objects refer to the same handle
obj == obj1
ans = logical
1
% Changing non-constant properties in one object reflects changes in both the objects
obj.x = 2;
obj, obj1
obj =
singleton with properties: x: 2 y: "Hello"
obj1 =
singleton with properties: x: 2 y: "Hello"
If you right click the class file and click on "Check Code Generation Readiness", you'll see that the tool does not report any issues:
Please refer to the following resources for more information:
Hope this helps!
  1 件のコメント
Rohan
Rohan 2024 年 8 月 29 日
Thanks for your answer Malay !

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDeployment, Integration, and Supported Hardware についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by