科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件采用敏捷方法进行用户界面开发

采用敏捷方法进行用户界面开发

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 1991年秋,在美国勒海大学亚科卡学院的一份研究报告《21世纪美国制造业的战略:一个工业主导的观点》中,首次提出了敏捷竞争的概念.而今天,我们似乎已经看到,敏捷已经在我们身边,形影不离.

作者:中国IT实验室 来源:中国IT实验室 2007年8月27日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
      LoginDialog 现在能通过所有的测试。为此,他包括了符合成功登录条件的用户名和密码域。显然,这只是比第一个版本的安全性能稍微好一些。登录代码不应该包含认证的硬编码!基于这点,我们应该引入一个单独的类来包含LoginDialog 用的验证用户的登录信息。然而,这个例子是关于GUI构造的,那让我们暂停这个不安全的登录代码,继续GUI方面。
  
  现在,我们已经建立了登录功能,并用单元测试覆盖了他,但没有可视的GUI来显示它。那下一步该做什么呢?对于已经作的和测试的实际功能,在GUI方面做的是创建和显示图像元素,然后在适当的时候调用login()方法。这个功能是普通和容易建立的,所以他不包含能中断和需要单元测试的复杂行为。因此,当建立GUI元素时,我们不需要去做测试先行的开发。例5展示了创建对话框窗口的Swing类LoginDialogView ,他的实现在LoginDialogView.java.文件。
  
  LoginDialogView.java
  
  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  public class LoginDialogView extends JFrame
  implements ActionListener {
  protected JTextField usernameField;
  protected JTextField passwordField;
  protected JButton loginButton;
  protected JButton cancelButton;
  private LoginDialog dialog;
  LoginDialogView(LoginDialog dlg) {
  super("Login");
  setSize(300, 140);
  dialog = dlg;
  addControls();
  loginButton.addActionListener( this );
  cancelButton.addActionListener( this );
  }
  public void actionPerformed(ActionEvent e) {
  String cmd = e.getActionCommand();
  if (cmd.equals("Login")
  && dialog.login(usernameField.getText(),
  passwordField.getText())) {
  hide();
  }
  }
  private void addControls() {
  Container contentPane = this.getContentPane();
  contentPane.setLayout(new GridBagLayout());
  GridBagConstraints c = new GridBagConstraints();
  JLabel label1 = new JLabel("Username:", Label.RIGHT);
  c.insets = new Insets(2, 2, 2, 2);
  c.gridx = 0;
  c.gridy = 0;
  contentPane.add(label1, c);
  usernameField = new JTextField("", 60);
  usernameField.setMinimumSize(new Dimension(180, 30));
  c.gridx = 1;
  contentPane.add(usernameField, c);
  JLabel label2 = new JLabel("Password:", Label.RIGHT);
  c.gridx = 0;
  c.gridy = 1;
  contentPane.add(label2, c);
  passwordField = new JTextField("", 60);
  passwordField.setMinimumSize(new Dimension(180, 30));
  c.gridx = 1;
  contentPane.add(passwordField, c);
  loginButton = new JButton("Login");
  c.gridx = 0;
  c.gridy = 2;
  contentPane.add(loginButton, c);
  cancelButton = new JButton("Cancel");
  c.gridx = 1;
  contentPane.add(cancelButton, c);
  }}
  
  LoginDialogView 包含了文本域,标签,和按钮元素。除了普通的GUI行为外,他只是有一个简单的行为,被actionPerformed() 方法实现。这个行为就是当登录按钮被点击后,login()方法被调用。如果登录成功,对话框就被所调用的hide()方法所关闭。
  
  为了调用login()函数,在LoginDialogView 构造器里需要接收一个LoginDialog实例。另外,他组装了完整的GUI设置和事件处理代码。大部分代码在addControls() 里,他简单的创建和排版了窗体上的GUI元素。
  
  LoginDialogView 代码示范了一个GUI瘦视图元素怎样被设计使它只包含普通的GUI代码,而把重要的需要测试应用的行为放到一个单独,可测试的敏捷对象中。
  
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章