文档

恢复的听众

创建监听器loadobj

假设您创建了一个属性侦听器,并希望能够保存和恢复事件源和侦听器。类创建侦听器是一种方法loadobj方法。

使用瞬态属性加载侦听器

BankAccount类存储帐户余额和帐户状态。一个PostSet的监听器。AccountBalance属性控制帐户状态。

AccountBalance属性值更改时,侦听器回调确定帐户状态。要点包括:

  • BankAccount类定义了AccountManagerListener属性以包含侦听器句柄。此属性启用loadobj方法创建侦听器,并在加载到工作区的对象中返回对侦听器的引用。

  • AccountManagerListener属性是瞬态因为不需要将侦听器句柄存储为BankAccount对象。创建一个附加到new的侦听器BankAccount在加载过程中创建的。

  • AccountBalance侦听器设置AccountStatus

  • 只有AccountManager类可以访问AccountStatus财产。

classdefBankAccount < handle >属性(setobserable, AbortSet) AccountBalance结束属性(瞬态)AccountManagerListener结束属性(Access = ?AccountManager) AccountStatus结束方法函数obj = BankAccount(initialBalance)AccountBalance = initialBalance;obj。一个ccountStatus =“新帐户”;obj。一个ccountManagerListener = AccountManager.addAccount(obj);结束结束方法(静态)函数Obj = loadobj(Obj)如果isstruct (obj)%处理错误initialBalance = obj.AccountBalance;obj = BankAccount(initialBalance);其他的obj。一个ccountManagerListener = AccountManager.addAccount(obj);结束结束结束结束

假设AccountManagerClass为各种类型的帐户提供服务。为BankAccount类,AccountManager类定义两个静态方法:

  • assignStatus-回调AccountBalance财产PostSet侦听器。的值BankAccountAccountStatus财产。

  • addAccount-创建AccountBalance财产PostSet侦听器。的BankAccount构造函数和loadobj方法调用此方法。

classdefAccountManager方法(静态)函数assignStatus (BA, ~)如果英航。一个ccountBalance < 0 && BA.AccountBalance >= -100 BA.AccountStatus =“透支”;elseif英航。一个ccountBalance < -100 BA.AccountStatus =“冻结”;其他的英航。一个ccountStatus =“开放”;结束结束函数lh = addAccount(BA) lh = addlistener(BA,“AccountBalance”“PostSet”@ (src evt) AccountManager.assignStatus (BA));结束结束结束

使用BankAccount和AccountManager类

的实例BankAccount类。

ba =银行账户(100)
ba =带有属性的BankAccount: AccountBalance: 100 AccountManagerListener: [1x1事件。AccountStatus: 'New Account'

现在设置一个帐户值来确认AccountManagerAccountStatus适当的:

英航。一个ccountBalance = -10; ba.AccountStatus
透支

相关的话题

这个话题有帮助吗?