快速业务通道

在Eclipse中创建新的重构功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
动获取这两项强大的功能。

2. Wizard类

一个Wizard就是一个装载一系列WizardPage页的容器,Wizard类的职责有:

装载一系列WizardPage,构造出一个复杂的界面。

装载领域类来处理具体业务逻辑。(在RefactoringWizard框架中这个类就是 Refactoring类)

维护WizardPage页之间以及页与领域类之间的数据传递和状态共享。(在这 里要补充一点,其实在具体RefactoringWizard框架的实现中有专门的类来分担 这部分职责。)

我们的界面行为可以千变万化(通过组合不同的WizardPage),而负责处理业 务逻辑的领域类也可以独立的变化,你可以随意扩展Wizard的界面功能 (-对扩 展开放),而不用修改现有RefactoringWizard框架(-对修改封闭),这正是OO设 计的最基本原则-OCP(Open-Close Principle)。

3. WizardDialog类

这个对话框类的主要职责是构造一个完整的GUI界面以及操作界面。它预设了 一些按钮(Back,Next,Finish,Cancel)等界面元素,它负责装载Wizard类,操 作时通过按钮Back、Next来在多个WizardPage之间切换。

下面我们给出RefactoringWizard框架的架构图:

图 5 Refactoring Wizard架构图

在Eclipse中创建新的重构功能(8)

时间:2010-12-02 IBM 志甘 春郭迎 林刘岳

从图 5中我们可以看到,如果我们把每一个WizardPage页看作一项业务,那 么Refactoring正是处理业务逻辑的控制中心,它封装了所有对业务逻辑的处理 ,当然它可以在将处理任务委任出去。但请注意,它并不负责实现业务流程,也 就是说各业务(各个Page界面)之间的逻辑顺序关系不由它维护。

RefactoringWizard 框架充分考虑到了应用的可扩展性,它在SWT的MVC(模型 -视图-控制)元架构模式的基础上,添加了一些新的架构元素。MVC模式促使业 务逻辑与界面分离,界面与控制行为分离,而RefactoringWizard框架增强了界 面本身分离的特性,它将一个完整的界面分拆成多个页面,用户可以动态组合这 些页面或添加新的页面来扩展界面行为。这种特性-界面的动态组合,低耦合, 高内聚,封装良好的接口-让我们领略到了OO设计的精髓。

下面我们通过以下几个步骤来扩展RefactoringWizard框架:

扩展RefactoringWizardPage

扩展RefactoringWizard

启动RefactoringWizard

第一步,扩展RefactoringWizardPage:首先我们新建一个类 AnnotationRefactoringWizardPage,它需要继承UserInputWizardPage类(其父 类是RefactoringWizardPage,而RefactoringWizardPage最终实现了 IDialogPage接口)。接下来就是实现IDialogPage接口的createControl(…)方法 ,在这个方法里实现你的界面行为,比如我们例子中的TimeOut文本框,代码清 单如下:

清单 14

/**   * create composite to add UI elements   */   public void createControl(Composite parent) {   // define UI    Composite composite = new Composite(parent, SWT.NONE);   GridLayout lay = new GridLayout();   lay.numColumns = 2;   composite.setLayout(lay);   btnCheck = new Button(composite, SWT.CHECK);   btnCheck.setText("Add timeout parameter");   GridData gdBtnCheck = new GridData();   gdBtnCheck.horizontalSpan = 2;   gdBtnCheck.horizontalAlignment = GridData.FILL;   btnCheck.setLayoutData(gdBtnCheck);   labName = new Label(composite, SWT.WRAP);   labName.setText("TimeOut:");   GridData gdLabName = new GridData();   gdLabName.horizontalAlignment = GridData.BEGINNING;   gdLabName.grabExcessHorizontalSpace = true;   labName.setLayoutData(gdLabName);   txt

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号