GEF框架中的设计模式

前言

图形编辑框架 (Graphical Editing Framework, GEF) ,是 Eclipse 平台下一个重要的框架,用来从应用模型开发富图形化的编辑器,是 Eclipse RCP 开发者的神兵利器。 GEF 框架涉及大量的概念和技术,有着非常陡峭的学习曲线。本文从设计模式的角度出发,解析 GEF 框架中的关键应用场景,希望能够帮助 Eclipse RCP 开发者更好地理解和应用这一框架。

GEF 通过大量使用设计模式来获取它的灵活性。除了 MVC 模式,GEF 最经常用到的设计模式是命令、工厂、观察者、职责链和状态。

模型-视图-控制器 (Model-View-Controller):MVC 模式被 GEF 用来解除用户界面,行为和表示之间的耦合。模型可以用任意 Java 对象表示,EMF (Eclipse Modeling Framework,Eclipse 建模框架 ) 被普遍使用来构造 GEF 的模型。视图必须实现 IFigure 接口,控制器则必须是 EditPart 类型。

命令 (Command):用来封装对模型的修改,支持 redo、undo 操作。

工厂 (Factory): GEF 框架应用工厂方法模式创建 Figure 应用抽象工厂模式创建 EditPart。

观察者 (Observer):通过观察 EditPart 的激活状态,ConnectionCreationTool 修改待创建连接的连接源。

职责链 (Chain of Responsibility):用来决定请求 (Request) 如何被编辑策略 (EditPolicy) 处理。

状态 (State):对于键盘、鼠标输入,GEF 编辑器通过 Tool 的改变来改变自己的行为。

本文示例代码来自于 GEF 的 3.4.1 版本。

模型-视图-控制器 (Model-view-controller, MVC)

GEF 框架严格遵循模型-视图-控制器模式 (MVC) 。

图 1. GEF 中的模型-视图-控制器 (images/gef_mvc_pattern.jpg)

时间: 2024-12-31 18:45:09

GEF框架中的设计模式的相关文章

JavaServer Faces框架使用的设计模式

server|设计 本文中,作者 Anand Joshi 使用 JSF 框架中的设计模式阐释了 JavaServer Faces (JSF) 体系结构.他讨论了 JSF 体系结构中使用的 GoF 设计模式,以及这些模式在 JSF 框架中的作用.任何对设计模式和 JSF 体系结构有一定了解的人都能从 Anand 详细的介绍中有所收获.*读者应该对 GoF 设计模式和 JSF 技术有很好的了解. 设计模式可以帮助用户在更高层次上抽象细节,更好地理解体系结构.如果比较熟悉 GoF 设计模式和 Java

探索JSF框架中使用的设计模式

js|设计 设计模式可以帮助用户在更高层次上抽象细节,更好地理解体系结构.如果比较熟悉 GoF 设计模式和 JavaServer Faces (JSF) 框架,本文可以帮助您洞察 JSF 框架中使用的设计模式,深入理解其工作原理. 本文探讨了 JSF 框架中使用的设计模式.详细讨论的设计模式包括 Singleton.Model-View-Controller.Factory Method.State.Composite.Decorator.Strategy.Template Method 和 O

JSF框架中使用的设计模式介绍

设计模式可以帮助用户在更高层次上抽象细节,更好地理解体系结构.如果比较熟悉 GoF 设计模式和 JavaServer Faces (JSF) 框架,本文可以帮助您洞察 JSF 框架中使用的设计模式,深入理解其工作原理. 本文探讨了 JSF 框架中使用的设计模式.详细讨论的设计模式包括 Singleton.Model-View-Controller.Factory Method.State.Composite.Decorator.Strategy.Template Method 和 Observe

JavaScript设计模式入门和框架中的实践

在编写JS和组装代码的过程中,运用一定的设计模式可以让我们的代码更加优雅.灵活. 下面笔者就结合诸如redux的subsscribe.ES6的class.vue里面的$dispatch.jquery里面的on/off来给大家简单介绍下设计模式在这些库.语法和框架中的使用. 设计模式解决的问题 设计模式并不是很玄乎的知识,很多同学在编写JS代码的时候已经在不经意间用了不少设计模式了. 笔者认为把设计模式单独抽象出来探讨,就和算法中抽象出来冒泡.排序一样,是为了描述一种常用的JS pattern.

设计模式中的迭代器模式在Cocoa Touch框架中的使用_IOS

基本理解迭代器模式(Iterrator):提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露该元素的内部表示. 当你访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式. 你需要对聚集有多种方式遍历时,可以考虑用迭代器模式. 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据. 迭代器定义了一个用于访问集合元素并记录当前元素的接口. 不同的迭代器可以执行不同的迭代策略.外

.NET中的设计模式五:观察者模式

设计 观察者模式(Observer)完美的将观察者和被观察的对象分离开.举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上.面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面.一个对象只做一件事情,并且将他做好.观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性. 观察者模式有很多实现方式,从根本上说,该模式必须包含两个角色:观察者和被观察对象.在刚才的例子中,业务数据是被观察对象,

java-想做一个CS结构的系统,不需联网,请问该是用什么框架,还有设计模式用哪种呀

问题描述 想做一个CS结构的系统,不需联网,请问该是用什么框架,还有设计模式用哪种呀 描述如题,使用java开发 spring hibernate ibatis struts统统不会呀 要学会需要多久 有速成教材吗 解决方案 cs的话纯Java+数据库就可以实现了啊 解决方案二: 要想把每一个框架学会肯定要花很多时间的,开始的时候并不一定要学会,知道怎么用就可以了,后面再在项目中慢慢学习扩展.没有速成教程的,想快一点都自己去搭建一个框架,整一个登录页面,后面自己去扩展里面的其他功能. 解决方案三

Java的Spring框架中AOP项目的一般配置和部署教程_java

0.关于AOP面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP是OOP的延续. 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对

iOS应用开发中使用设计模式中的观察者模式的实例_IOS

在软件开发中,无论是那种高级语言中总会伴随着一些最为常用的设计模式,即便就如iOS开发中与我们打交道最多的无非就是单例模式.观察者模式和工厂模式了,当然了其他的设置模式也同样存在在编程的很多地方.下面就就让我们简单的了解下观察者模式吧! 观察者模式本质上时一种发布-订阅模型,用以消除具有不同行为的对象之间的耦合,通过这一模式,不同对象可以协同工作,同时它们也可以被复用于其他地方Observer从Subject订阅通知,ConcreteObserver实现重现ObServer并将其重载其updat