惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 般若菩提

GEF源码分析(六) GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事 二 GEF源码分析(五) GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事 GEF源码分析(四) GEF 消息转义 ___ Tool的作用 GEF源码分析(三) GEF 的树状构架 ___ Model/EditPart/Figure GEF源码分析(三) 模拟GEF设计思路,解剖GEF2 附图:包含GEF的Editor创建时序图 GEF源码分析(一) eclipse的GEF相关项目说明 项目管理杂谈之打造软件团队 兄弟姐妹们测试一下你的职业倾向:〉 CodeReview的思索 eclipse内部类部分框架 eclipse工作台概念图 转载自CSDN:Martin Fowler:设计已死? 诸子百家与项目管理 之 孙子兵法篇(项目管理的整体思维) 世界可用性日你听说了嘛? 经典搞笑故事,结婚的男同胞注意哦;) 少时好坏,中时对错,老时因果 SharpDevelop自动命令启动UI部分(看SharpDevelop源码分析笔记随想) 强烈推荐两本经典OO书籍以及对用例编写的启发 - 般若菩提 - 博客园 哲学离我们有多远?
GEF源码分析(二) 模拟GEF设计思路,解剖GEF 1
般若菩提 · 2005-11-30 · via 博客园 - 般若菩提
 

GEF学习笔记(二) 模拟GEF设计思路,解剖GEF 1

GEF如同其他的一些framework一样,是一个复杂庞大(有点夸张)的,当我们想使用驾驭它时,就必须全面的理解其整体构架及其运作过程。这需要我们的毅力和敏锐。旅途开始了….

GEF主要的任务是针对2D图形编辑操作,如下图。

为了使GEF能够广泛的用于种类繁多2D图形编辑领域,GEF就必须建立一个严格的易扩充/易组合/易重用的MVC框架(当然这种分解细化功能对象的方法思想,我们可以用在其它的地方,其它领域、其他语言如C#上)。

那么如果设计 这个 严格的MVC框架(对于Model是严格的独立,它不依赖与ViewController) 以及 此框架 如何 达到 易扩充/易组合/易重用 的特性。下面我按照自己拙劣的思路,以麻雀之眼度鸿雁之志啦

对于MVC

View部分:GEF理所当然要使用自家的东东Draw2D。利用Draw2DFiguer作为自己的View

Model部分:往往内部包含了千差万别、不可预知的商业信息。因此、GEF框架应该尽量减少约束(在下面将详细说明约束)。

Controller部分:EditPart/Draw2DFigure/Model这三个树状对象模型,在EditPart中将建立了与其对应的Draw2DFigure/Model结点 建立一一关联的关系。

这样产生的构架如下:

思考:

为什么Controller要同View一样采用树状结构呢?

Controller以树状的形式存在,这样便于功能分解(这个道理有点像 在类设计中 复合优于继承 一般)

这样每一结点的Controller(EditPart) 仅需要处理

  • 自身逻辑功能
  • 管理子Controller
  • 必要时通知父Controller

尤其当用户需要在图形界面编辑界面中,需要使用多种不同UI行为规则的2D元素(例如不同的形状块,不同行为的连线等)组合来完成工作时(例如类似Visio这样的界面),这种构架的优势就显露无疑。

未完待续….(下面要探讨如何产生上述三个树状模型等)