GEF原理及实现系列(七、模型同步)

本文介绍了一种基于事件通知机制的模型同步方法,确保当模型发生变化时能够及时更新视图。通过使用PropertyChangeSupport和PropertyChangeListener机制,可以实现在模型属性变化时通知控制器,进而更新视图。
为了保证数据和展现的同步,必须要有一种消息通知机制,当模型被修改时通知相应的视图进行更新,下面将介绍如何实现这种消息机制。
1.模型同步的功能
    模型是GEF中实体,当模型的属性被修改后,控制器会监听到模型属性改变的事件,然后通知视图进行更新,模型和视图之间没有直接的联系,如下图:

    要通过事件的通知机制获得模型同步的步骤如下:
    (1)模型中包含注册监听器的机制,本文范例是通过PropertyChangeSupport和PropertyChangeListener机制添加模型监听器。
    (2)把控制器注册为模型监听器,在此通过控制器实现PropertyChangeListener接口,并把自己添加到模型的监听器即可。
    (3)当模型触发属性改变的事件后,控制器监听到事件并相应的更新视图。
        另外,并不是模型的所有属性的改变都必须通知控制器,一般情况下,当模型的属性更改后要引起视图的更新时,必须触发事件通知控制器,因为模型和视图之间没有    任何的关联。
2.模型同步的实现
    典型的模型对象会包含PropertyChangeSupport类型的成员变量,用来触发事件,通知监听器即控制器。当模型的属性被修改后,控制器将更 新视图的显示。例如,某个节点的名字修改后,将要触发相应的事件,通知控制器,如在前面提到的Node类中有如下片段:
java 代码
 
  1. public void setName(String name) {  
  2.         if (this.name.equals(name)) {  
  3.             return;  
  4.         }  
  5.         this.name = name;  
  6.         //当模型的名字改变后,通知监听器更新名字的显示  
  7.         firePropertyChange(PROP_NAME, null, name);  
  8.     }  

    当模型的名字改变后,将通过firePropertyChange方法触发模型名字被修改的事件,其中第一个参数为事件类型唯一标识,表示模型的什么属性被改变,第二个参数为改变钱的值,第三个参数为改变后的新值。
    模型触发事件后,控制器将监听到模型属性修改的事件,通知事件的类型,即firePropertyChange方法的第一个参数判断是哪一个属性被修改,然后执行相应的操作。下面是NodePart中相应的操作代码:
//监听模型属性改变
   
java 代码
 
  1. public void propertyChange(PropertyChangeEvent evt) {  
  2.         if (evt.getPropertyName().equals(Node.PROP_LOCATION))  
  3.             //更新视图  
  4.             refreshVisuals();  
  5.         else if (evt.getPropertyName().equals(Node.PROP_NAME))  
  6.             refreshVisuals();  
  7.         else if (evt.getPropertyName().equals(Node.PROP_INPUTS))  
  8.             //更新连接  
  9.             refreshTargetConnections();  
  10.         else if (evt.getPropertyName().equals(Node.PROP_OUTPUTS))  
  11.             refreshSourceConnections();  
  12.     }  

    当控制器监听到模型的改变事件后,将会通过视图的更新,从而实现了模型数据和视图显示的同步。
【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值