Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1676016
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类:

2010-11-29 00:55:08

界面状态控制

界面状态控制完全可以书写一本书。
界面状态控制是非常复杂的一个事情。
包含的内容非常的广泛:

1,  业务驱动的用户需求,对界面的要求
2,  界面关联关系的描述
3,  辅助工具的开发
------------------------------------------------------
我个人认为界面状态控制模式是一个设计理念:
(如果自己觉得对理论东西不感兴趣下面的东西最好不要看。)
我们可以称之为界面状态控制器。(下面只介绍在SWING模式下的处理)
先讲点别的:
  比如:
软件常见的语义描述东西有三种
a)  属性:比如:Label.色彩=红色
b)  关联关系:比如:A=B+C
c)  程序:On Action Then,if(….)
Excel 将大量的程序逻辑降格为关联关系取得巨大的成功。

下面介绍的界面状态控制,完全将程序的界面控制模式,降格为关联关系。
  
用户有要求:界面处理 A=B+C。
      建议大家不要 在 B控件,C控件上事件监听器,然后进行处理。
      而是做一个公式解释器,自动添加代表B,C的控件,然后将B,C
的事件截获,进行自动运算。

下面介绍一下界面状态控制器:

A.  如何看待界面?
从用户的需求开始谈起,用户的需求会是如此的:
一、  做什么业务,用户的描述会忽略管理的主对象,容易让不同管理对象的东西放在一起,导致界面设计非常复杂。所以第一步需要作的是仔细分析用户的需求,抓出用户的管理内容。比较容易操作的模式是,顺着用户的业务过程进行推演,比较容易发现问题。
二、  界面场景与界面数据关系的准确捕捉,用户在描述界面过程时,希望捕捉出两个东西,或者说是划分出连个东西。一个是用户的工作场景,一个是界面控件关联关系。
B.  如何定义一个界面的控制
大多数情况下是利用事件驱动的模型去处理:
书写的代码看起来象:
•  On Label Text Change 
•  If(Text=’敌人’) then Button_容许投降.setEnable(true)
另外一种是书写硬代码的模式进行场景切换:
1,  定义几种常量 UI_EDIT ,UI_ADDNEW,UI_INIT等等
2,  根据这几个状态:setState 让后将几个相关的控件的状态设置一遍。
C.  个人建议方案
Action + UIState 的设计模式
a)  Action 界面动作,比如 OnButtonClick OnTabbedPaneChange
b)  UIState 这个说起来比较麻烦:
比如:SaveButton.Enabled = (InputText.Text == ‘敌人’)
目前大多数开发人员的思维模式都是:什么事件设置什么内容
很难转变成,某个状态是什么条件下改变成什么状态的。
如果你能够在大多数情况想清楚控件(或者是数据)的关联关系,祝贺你你的软件理论水平应当不低,可以拿到 10k 了。
c)  然后定义 Action to UIState:OnEdit to UI_EDIGING
但是如果利用手书写这个控制器是非常麻烦的事情。
状态控制器可以书写外挂式的状态控制器。

开发流程:
书写原始的业务处理保证数据基本处理利用界面状态控制器进行界面状态设置 
我们团队进行复杂界面控制,开发速度提高3~10倍。维护简单很多。
以后会介绍:
A,  如何自动拦截界面事件。
B,  如何定义自定识别界面组件。

阅读(908) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~