﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-潮水的诺言-随笔分类-Eclipse GEF/EMF/GMF</title><link>http://www.blogjava.net/teleyic/category/25417.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 21 Sep 2007 11:08:08 GMT</lastBuildDate><pubDate>Fri, 21 Sep 2007 11:08:08 GMT</pubDate><ttl>60</ttl><item><title>GEF与设计模式</title><link>http://www.blogjava.net/teleyic/archive/2007/09/02/142085.html</link><dc:creator>潮水的诺言</dc:creator><author>潮水的诺言</author><pubDate>Sun, 02 Sep 2007 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/teleyic/archive/2007/09/02/142085.html</guid><wfw:comment>http://www.blogjava.net/teleyic/comments/142085.html</wfw:comment><comments>http://www.blogjava.net/teleyic/archive/2007/09/02/142085.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/teleyic/comments/commentRss/142085.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/teleyic/services/trackbacks/142085.html</trackback:ping><description><![CDATA[<p>与Eclipse Platform类似，Eclipse GEF通过大量使用设计模式来得到它的灵活性和扩展性。下面总结以下经常碰到的模式的小结。<br />
1. MVC<br />
与其他图形框架类似，GEF使用MVC来消除UI之间的耦合。<br />
（1）Model:可以用任何Java对象来表示,model必须拥有某种notification机制。<br />
（2）Views: Figure/TreeItems, 在典型的GraphicalEditor中，Figure是用于在GraphicalViewer中显示的Draw2D Figure，而TreeItems用于在Outline中的TreeViewer中显示信息。<br />
（3）Controller(EditPart):通常对于每个Figure对应一个EditPart，EditPart用于修改，很多修改任务都是通过EditPolicy来实现的。<br />
2．Command<br />
Command封装了Model的修改，可以通过继承GEF中的抽象类Command，提供可Redo/Undo功能，我们主要是在execute()/redo()/undo()中完成业务功能的实现。<br />
3. Chain of Responsibility<br />
Chain of Responsibility通过将Request传递给多个对象，并给这些对象机会处理请求，从而将请求的发送者和接受者解除耦合。在GEF中，多个EditPolicy可以收到请求，返回Commands，这些Commands以链的方式组织在一起。<br />
4. State<br />
允许Graphical Editor在内部状态发生改变的时候，修改编辑器的行为。对于GEF Editor，用户切换工具可以改变编辑器的状态。例如，对于鼠标按下事件，编辑器在激活选区工具和激活创建工具下的行为是截然不同的。详细请见org.eclipse.gef.Tool接口，AbstractTool定义了几个state，STATE_xxx.<br />
5. Abstract Factory<br />
提供Interface创建一系列相关或相依赖的对象。这个模式在根据模型部件创建编辑部件时被使用。<br />
6. Factory Method<br />
定义了方法创建对象，但是允许子类决定实例化的类。这个模式没有被单独讨论，但是它是创建编辑部件的另一种可选的方法。createChild方法允许你不使用工厂就创建子编辑部件。<br />
</p>
<img src ="http://www.blogjava.net/teleyic/aggbug/142085.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/teleyic/" target="_blank">潮水的诺言</a> 2007-09-02 16:34 <a href="http://www.blogjava.net/teleyic/archive/2007/09/02/142085.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>