西乡侯
发贴: 11
积分: 1
|
于 2005-08-10 11:23
界面状态控制
界面状态控制完全可以书写一本书。 界面状态控制是非常复杂的一个事情。 包含的内容非常的广泛:
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, 如何定义自定识别界面组件。
|