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

豆豆网   技术应用频道   2008年01月10日    社区交流

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

  不要认为这样的想法是多余的,笔者对国内外多个大型业务系统有所接触(财务,税务,零售等),发现这些系统无一例外的构建在领域通用的框架之上,这些框架面对特定领域的问题的集合,提供了快速构建和灵活扩展的能力,其框架的可重用性非常强,业务开发人员可以开发很少的代码来构建完整的领域业务系统(极端的例子表明,可以不用编写代码就能生成定制的业务系统)。这些框架绝对不是一开始就被构建出来的,而是在实现多个类似业务系统过程中,逐渐的演化形成的,这些可定制的框架为软件公司带来了滚滚的利润,也为开发人员带来了很大的成就感。对于普通的程序员,只要我们坚持用可重用的眼光思考问题,就能得到提升。

  首先,从小处看,我们应当保持代码的纯净,不能任何冗余的代码,冗余的即可重用。拷贝粘贴之余,只要我们坚持重构,在代码级别,我们能保持最大的重用性。更为重要的是,在保持了可重用性的同时,我们还集中了变化点,使得代码的维护变得更为容易。

  其次,组件级别(UI上称为构件),只要用相似的功能,我们都能精简,将业务上或者技术上相似的功能封装成可重用的组件,你就会更上一层楼。

  最高的境界就是框架层次上的,综合同领域内多个系统要面对的共同问题,构建一个可重用的框架,将会无数倍的降低我们构建类似系统的代价。

  我们应当树立“编程序即是编框架”的观念,从小处入手,胸怀天下,随时随地重构,追求代码,组件和系统的可重用性,在实现可重用性的同时,正交的隔离变化点,集中的控制变化点,自然的实现系统的应变能力和可扩展能力。对于目前的问题,我们将对这个组件级别的重用问题具体分析,找出一种有效的解决方法。现在的代码看上去虽然不错,但是因为所有的逻辑集中在ContentProvider和LabelProvider中,导致对需求的变化无法有效隔离,每一次的需求改动波及面很大,并且结构混乱,代码中充满了 if else 或 switch 这样的嵌套重复判断。分析一下前面提出的种种需求,我们都是可以将这些需求区分为行的行为和列的行为。因此,我们需要将MVC模式细化,对于我们的table而言,我们需要行控制器和列控制器,我们需要将类似的变化集中在某些地方,让这些细化的控制器各司其职。我们的目标是

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

正在加载评论...