Используйте переходные свойства постараться не сохранять то, что можно воссоздать при загрузке объекта. Например, объект может содержать компоненты, которые можно регенерировать от данных, который сохранен. Регенерация этих компонентов также позволяет более новым версиям класса создать компоненты по-другому.
Класс YearlyRainfall
иллюстрирует, как регенерировать график когда загружаемые объекты того класса. объекты YearlyRainfall
содержат столбиковую диаграмму ежемесячного ливня для данного местоположения и год. Свойства Location
и Year
являются обычными свойствами, значения которых сохранены, когда вы сохраняете объект.
Свойство Chart
содержит указатель на столбиковую диаграмму. Когда вы сохраняете столбиковую диаграмму, MATLAB® также сохраняет фигуру, оси, и объект Bar и данные, требуемые создать эти графические объекты. Дизайн класса YearlyRainfall
избавляет от необходимости сохранять объекты, которые это может регенерировать:
Свойством Chart
является Transient
, таким образом, графические объекты не сохранены.
ChartData
является частной собственностью, которая обеспечивает устройство хранения данных для данных объектов Панели (YData
).
Вызовы функции load
метод set.ChartData
, передавая его сохраненные данные столбиковой диаграммы.
Метод setup
регенерирует столбиковую диаграмму и присваивает указатель на свойство Chart
. И конструктор класса и вызов метода set.ChartData
setup
.
classdef YearlyRainfall < handle properties Location Year end properties(Transient) Chart end properties(Access = private) ChartData end methods function rf = YearlyRainfall(data) setup(rf,data); end function set.ChartData(obj,V) setup(obj,V); end function V = get.ChartData(obj) V = obj.Chart.YData; end end methods(Access = private) function setup(rf,data) rf.Chart = bar(data); end end end
Преимуществом дизайна класса YearlyRainfall
является гибкость, чтобы изменить тип графика, используемого, не делая ранее сохраненные объекты несовместимыми. Загрузка объекта воссоздает график, базирующийся только на данных, который сохранен в MAT-файл.
Например, измените тип графика от столбиковой диаграммы до ступенчатого графика путем изменения метода setup
:
methods(Access = private) function setup(rf,data) rf.Chart = stairs(data); end end