Eclipse设计实现可重用的SWT构件

http://tech.ddvip.com   2008年01月10日    社区交流

内容摘要:本文从创建一个简单的SWT Tree Table开始,引入可重用的用户界面构件这个开发人员普遍关心的问题,然后分析Eclipse的用户界面的一些设计模式,循序渐进的向读者展示了如何设计实现一个精巧的高度可重用的TreeTable构件,最终通过增加一些扩展的功能显示了该构件强大的可扩展能力和灵活性。

  如果希望给不同的列增加过滤显示的功能或者为某些列增加排序的功能…

  如果某些特定的行或者列需要增加显示背景色…

  如果某些行需要增加特定的右键菜单…

  如果某些行可以打开特定的编辑器或者对话框…

  好吧,这些事情是我们经常会遇见的,我打赌如果你就按部就班的把这些功能实现后你的ContentProvider和LabelProvider中的代码一定混乱不堪,经过岁月的洗礼和需求的频繁变更,我们的代码迅速膨胀,就像Martin Fowler所说,到处散发出“臭味”,有经验的读者一定在项目中见过长达数千行的ContentProvider和LabelProvider类,这些类是如此的庞大以致于后期的维护和修改变得异常的困难。

  何况,如果系统中存在数十个这样的不同的复杂的table,尽管你可以通过快速的拷贝,粘贴,重命名和简单的重构在几天内完成数十个表的工作,然而面对需求的变化,事情就变得越发的复杂,你不得不每天在需求的变化中,重复的修改这些数不清的ContentProvider和LabelProvider,是谁让这个世界如此疯狂?我们一定经历过这样疯狂拷贝粘贴的年代,面对很多类似的表格,我们经常会重复的创建无数的table,给他们增加很多相似的功能,当你沾沾自喜的数着自己一天又编写了多少个Java类,创建了多少个表格的时候,你是否想过,为什么这些Java类看上去这样的相似,难道重复的拷贝相似的代码不能让你思考一些更好的办法吗?

  是时候了,是时候我们重新开始,创建一个高度可重用的TreeTable构件了,这个构件还要具有很强的扩展能力。为什么要可重用?因为你会不止一次的用到它。为什么要扩展?因为它不一定完全满足你的需求。如果我们编写程序的时候时刻有这样的想法,我相信我们的程序一定会比以前提高很多,永远不要假定你的代码是封闭的,要时刻准备着被重用。

作者:翁长河    责编:豆豆技术应用

正在加载评论...