恢复的听众
创建监听器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);结束结束结束结束
假设AccountManager
Class为各种类型的帐户提供服务。为BankAccount
类,AccountManager
类定义两个静态
方法:
assignStatus
-回调AccountBalance
财产PostSet
侦听器。的值BankAccount
AccountStatus
财产。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'
现在设置一个帐户值来确认AccountManager
集AccountStatus
适当的:
英航。一个ccountBalance = -10; ba.AccountStatus
透支
相关的话题
这个话题有帮助吗?