主要内容

恢复的听众

创建监听器loadobj

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

使用瞬态属性加载侦听器

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

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

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

  • AccountManagerListener属性是瞬态因为不需要使用BankAccount对象。创建一个附加到newBankAccount在加载过程中创建的。

  • AccountBalance侦听器设置AccountStatus

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

classdefBankAccount <处理性质(AbortSet SetObservable AccountBalance结束性质(瞬态)AccountManagerListener结束性质(Access = ?AccountManager结束方法函数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 = addlistener(BA,“AccountBalance”“PostSet”...@ (src evt) AccountManager.assignStatus (BA));结束结束结束

使用BankAccount和AccountManager类

的实例BankAccount类。

英航= BankAccount (100)
ba = BankAccount with properties: AccountBalance: 100proplistener] AccountStatus: '新帐户'

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

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

相关的话题