NFramework开源AOP框架设计文档
NFramework开源AOP框架设计文档
1.1 ITransaction接口
用于事务控制的接口,接口方法如下表:
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
1.2 IDBUtil接口
用于数据库访问的接口。通过工厂方法创建该接口的实例,实现动态数据库的调用。IDBUtil变相的实现了ADO.NET的IDbCommand接口,因此只要您熟悉IDbCommand接口方法,您就可以很容易的使用实现了IDBUtil接口的方法,具体方法如下表:
方法名称 方法说明
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载) 获取数据集
1.3 AccessDBUtil类
用于访问Access数据库的类。AccessDBUtil类继承了ITransaction、IDBUtil接口,因此当根据数据库类型实例化ITransaction或IDBUtil接口时,实际上实例化本类,从而封装客户代码对不同数据库的访问功能。AccessDBUtil类的具体方法如下表:
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载) 获取数据集
1.4 SqlServerDBUtil类
用于访问Sql Server数据库的类。同AccessDBUtil类。
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载) 获取数据集
1.5 OracleDBUtil类
用于访问Oracle数据库的类。同AccessDBUtil类。
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载)
来源:收集整理于互联网
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/4_webprogram/asp.net/netjs/20100804/522865.html
http://blog.csdn.net/lipeijs3/article/details/5177435
http://lizhengfa.iteye.com/blog/574209
UI框架设计文档(初稿)
分类: 技术分享--原创 2010-01-11 20:36 600人阅读 评论(0) 收藏 举报
第一章. 需求
自定义组件需要完成两样基本任务:第一侦听并处理低层事件,根据具体情况改变组件状态,如需要还要发出高级事件;第二,根据当前组件的状态画出当前组件的外观
侦听底层的事件是指侦听类似于mouse、keyboard、focus等事件,然后处理此事件,如果发现此事件带有特定语义,表达某种组件行为,则改变当前的组件状态以记录,并触发某种事件通知应用程序进行处理。举例说明,想象你准备实现一个简单的按钮,你可以通过继承JComponent来完成。你可以在按钮初始化时,注册此按钮的鼠标事件侦听器,以侦听发生自己组件上的鼠标事件。当按钮捕获到鼠标按下时,检查鼠标按下的点是否在按钮有效区域内。如果是,则认为当前是一个按钮按下动作,那么改变按钮的状态为按下去,调用repaint方法通知按钮重画成按下去的状态,然后发出 ActionPerformed的事件,通知注册在此按钮上的应用程序的ActionListener处理这个动作
第二章. UI框架体系的概念
第一节 UI只是图形化界面的展示层(包含数据显示逻辑),不包括复杂的应用逻辑与访问数据库的功能
第二节 实现各种应用不同的UI 是一件复杂而又费时的工作。但每种具体UI 之间又有诸多相同之处, 如UI 的形态、样式、要素、数据处理逻辑等。为了统一UI 风格, 统一编码规范, 简化具体UI 的实现过程, 我们把UI 通用部分进行抽象, 封装成统一的UI 底层平台, 具体UI 的实现是程序员在这一平台上完成的, 此平台我们称之为UI Framework(UI 框架体系) 。
第三节 UI Framework是具体UI实现的基础,它对UI通用的形态,样式,要素,行为进行了统一的规划,定义,约束与描述。并且阐明了整个UI设计,内部对象之间的协作依赖关系,责任分配和流程控制,行程一个系统的可重用的底层UI框架平台,是具体UI实现者定制的应用骨架。一遍编程人员采用统一的标准与规范,复用组件,快速实现出风格统一,功能各异,人性化的人家交互界面
第四节 UI FrameWork的组成
1. UIManager:所有UI程序显示的统一窗口,整个UI层最核心的部分,是UI层的管理和行为调度者,也就是说UI的形态,样式,行为动作都由UIManager 来管理调度实现。设计这一个概念是为了让这个公共的窗口来统一界面的风格,窗口内容的布局,统一响应菜单命令,调度处理窗口内容中显示的数据集。这简化了UI的实现,使实现者只关注UserUI部分的实现,其他部分由UIManager按照既定的逻辑来完成。(仿照J4ME的UIManager)
2. UserUI:应用界面,最终显示在UIManager内容区域中的可视化图形部分。用来装载窗口控件,并完成数据的显示和数据的采集。UserUI的设计目标是一个负责显示可视化的UI的bean,没有数据处理的逻辑与流程的概念,并且如果不同应用程序如果显示的界面表现相同,可以共有一个UIbean ( 原来的ItemCanvas )(当软键菜单出现的时候,背景只是上一次绘画内容的一张图片,只有当软键菜单消失之后,才会重新绘画这些控件)
3. UI Delegate:UI Delegate负责从UserUI的模型获取数据并渲染到屏幕上去;UI Delegate对象可以在运行的时候动态替换,这就使具备了可插拔的外观(Pluggable Look-And-Feel, PLAF)。
4. UIMain负责处理窗口中的数据集的非可视化部分的程序,UIManager调用UIMain的具体方法来实现应用数据处理(联网逻辑,解析等)
5. UITookit:窗口控件,是嵌入在UserUI的Panel里面允许的各种控件,如文本框,下拉框,单选框,表格等控件,用来录入或者显示数据 (原来的Item)
6. DataB:数据类,对实际应用数据集的封装
具体分析:
( 1) UIWindow 是整个UI 层的管理与行为调度者。addMts方法实现界面的菜单、工具栏、状态栏的加载与应用; initListener方法用来加载界面事件的监听列表。doMain 方法是UIWindow调用UIMain 方法的统一入口。其中setContent 方法调用UIMain的getContentUI 方法获得UserUI 的实例来加载可视化的应用界面; dealDataB 方法处理UserUI 传入的应用数据; 通过save、update、remove 等方法调用UIMain 里同名方法实现应用数据的增、删、改、查等逻辑处理。
( 2) UIMain 实现了应用数据增、删、改、查等处理方法, 而且提供了用户功能扩展的标准接口, 以便UIWindow 通过doMain方法统一调用。
( 3) UserUI 是一个负责显示应用数据的可视化Bean。get-Component 方法实现了窗口控件的加载; handUILayout 方法用来管理窗口控件布局; initial 方法用来初始化应用界面的缺省值;datasStore 方法把窗口控件的值封装成应用数据( dataB) , 然后通过setCurrentDataB 方法传给UIMain, 以便UIWindow 进行逻辑处理; getCurrentDataB 方法获取UIWindow 传给UIMain 的后台查询应用数据( dataB) , 然后通过datasLoad 方法显示到应用界面上的窗口控件。
( 4) DataB 是应用数据的集合类, 是UIWindow、UserUI 类的属性。
第三章. 事件模型
组件在侦听到原生事件并处理后,往往产生新的逻辑事件。逻辑事件是某些组件所特有的、具有特定语义的事件,和原生事件不同,它们并不被派发到系统事件队列中,而是由组件直接触发。事件处理器作为组件的观察者添加到组件上并侦听触发的事件。
例如new JscrollPane(new JtextArea())这个系统,它里面包括两个JScrollBar和一个JTextArea,当鼠标拖动事件触发JScrollBar时,JScrollBar处理了这个鼠标拖动事件,并发出滚动条拖动事件,这个事件传播给JTextArea,JTextArea处理这个拖动事件,相应的更新自己显示的内容,如果JTextArea之后又根据更新发出了一个新的事件,这个事件便会继续传播下去。
第四章. 实现可插拔外观
这些可插拔LAF的API包括:
· UserUI类中的钩子
· LAF管理的顶层API
· 独立的包中实际实现LAF的接口
第五章. 复合组件绘画
使用Render渲染器
NFramework开源AOP框架设计文档
1.1 ITransaction接口
用于事务控制的接口,接口方法如下表:
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
1.2 IDBUtil接口
用于数据库访问的接口。通过工厂方法创建该接口的实例,实现动态数据库的调用。IDBUtil变相的实现了ADO.NET的IDbCommand接口,因此只要您熟悉IDbCommand接口方法,您就可以很容易的使用实现了IDBUtil接口的方法,具体方法如下表:
方法名称 方法说明
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载) 获取数据集
1.3 AccessDBUtil类
用于访问Access数据库的类。AccessDBUtil类继承了ITransaction、IDBUtil接口,因此当根据数据库类型实例化ITransaction或IDBUtil接口时,实际上实例化本类,从而封装客户代码对不同数据库的访问功能。AccessDBUtil类的具体方法如下表:
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载) 获取数据集
1.4 SqlServerDBUtil类
用于访问Sql Server数据库的类。同AccessDBUtil类。
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载) 获取数据集
1.5 OracleDBUtil类
用于访问Oracle数据库的类。同AccessDBUtil类。
方法名称 方法说明
BeginTransaction(+2次重载) 开始事务
CommitTransaction 递交事务
RollbackTransaction 回滚事务
ExecuteNonQuery(+4次重载) 对连接执行 Transact-SQL 语句并返回受影响的行数
ExecuteScalar(+2次重载) 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
GetDataTable(+4次重载)
来源:收集整理于互联网
文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/4_webprogram/asp.net/netjs/20100804/522865.html
http://blog.csdn.net/lipeijs3/article/details/5177435
http://lizhengfa.iteye.com/blog/574209
UI框架设计文档(初稿)
分类: 技术分享--原创 2010-01-11 20:36 600人阅读 评论(0) 收藏 举报
第一章. 需求
自定义组件需要完成两样基本任务:第一侦听并处理低层事件,根据具体情况改变组件状态,如需要还要发出高级事件;第二,根据当前组件的状态画出当前组件的外观
侦听底层的事件是指侦听类似于mouse、keyboard、focus等事件,然后处理此事件,如果发现此事件带有特定语义,表达某种组件行为,则改变当前的组件状态以记录,并触发某种事件通知应用程序进行处理。举例说明,想象你准备实现一个简单的按钮,你可以通过继承JComponent来完成。你可以在按钮初始化时,注册此按钮的鼠标事件侦听器,以侦听发生自己组件上的鼠标事件。当按钮捕获到鼠标按下时,检查鼠标按下的点是否在按钮有效区域内。如果是,则认为当前是一个按钮按下动作,那么改变按钮的状态为按下去,调用repaint方法通知按钮重画成按下去的状态,然后发出 ActionPerformed的事件,通知注册在此按钮上的应用程序的ActionListener处理这个动作
第二章. UI框架体系的概念
第一节 UI只是图形化界面的展示层(包含数据显示逻辑),不包括复杂的应用逻辑与访问数据库的功能
第二节 实现各种应用不同的UI 是一件复杂而又费时的工作。但每种具体UI 之间又有诸多相同之处, 如UI 的形态、样式、要素、数据处理逻辑等。为了统一UI 风格, 统一编码规范, 简化具体UI 的实现过程, 我们把UI 通用部分进行抽象, 封装成统一的UI 底层平台, 具体UI 的实现是程序员在这一平台上完成的, 此平台我们称之为UI Framework(UI 框架体系) 。
第三节 UI Framework是具体UI实现的基础,它对UI通用的形态,样式,要素,行为进行了统一的规划,定义,约束与描述。并且阐明了整个UI设计,内部对象之间的协作依赖关系,责任分配和流程控制,行程一个系统的可重用的底层UI框架平台,是具体UI实现者定制的应用骨架。一遍编程人员采用统一的标准与规范,复用组件,快速实现出风格统一,功能各异,人性化的人家交互界面
第四节 UI FrameWork的组成
1. UIManager:所有UI程序显示的统一窗口,整个UI层最核心的部分,是UI层的管理和行为调度者,也就是说UI的形态,样式,行为动作都由UIManager 来管理调度实现。设计这一个概念是为了让这个公共的窗口来统一界面的风格,窗口内容的布局,统一响应菜单命令,调度处理窗口内容中显示的数据集。这简化了UI的实现,使实现者只关注UserUI部分的实现,其他部分由UIManager按照既定的逻辑来完成。(仿照J4ME的UIManager)
2. UserUI:应用界面,最终显示在UIManager内容区域中的可视化图形部分。用来装载窗口控件,并完成数据的显示和数据的采集。UserUI的设计目标是一个负责显示可视化的UI的bean,没有数据处理的逻辑与流程的概念,并且如果不同应用程序如果显示的界面表现相同,可以共有一个UIbean ( 原来的ItemCanvas )(当软键菜单出现的时候,背景只是上一次绘画内容的一张图片,只有当软键菜单消失之后,才会重新绘画这些控件)
3. UI Delegate:UI Delegate负责从UserUI的模型获取数据并渲染到屏幕上去;UI Delegate对象可以在运行的时候动态替换,这就使具备了可插拔的外观(Pluggable Look-And-Feel, PLAF)。
4. UIMain负责处理窗口中的数据集的非可视化部分的程序,UIManager调用UIMain的具体方法来实现应用数据处理(联网逻辑,解析等)
5. UITookit:窗口控件,是嵌入在UserUI的Panel里面允许的各种控件,如文本框,下拉框,单选框,表格等控件,用来录入或者显示数据 (原来的Item)
6. DataB:数据类,对实际应用数据集的封装
具体分析:
( 1) UIWindow 是整个UI 层的管理与行为调度者。addMts方法实现界面的菜单、工具栏、状态栏的加载与应用; initListener方法用来加载界面事件的监听列表。doMain 方法是UIWindow调用UIMain 方法的统一入口。其中setContent 方法调用UIMain的getContentUI 方法获得UserUI 的实例来加载可视化的应用界面; dealDataB 方法处理UserUI 传入的应用数据; 通过save、update、remove 等方法调用UIMain 里同名方法实现应用数据的增、删、改、查等逻辑处理。
( 2) UIMain 实现了应用数据增、删、改、查等处理方法, 而且提供了用户功能扩展的标准接口, 以便UIWindow 通过doMain方法统一调用。
( 3) UserUI 是一个负责显示应用数据的可视化Bean。get-Component 方法实现了窗口控件的加载; handUILayout 方法用来管理窗口控件布局; initial 方法用来初始化应用界面的缺省值;datasStore 方法把窗口控件的值封装成应用数据( dataB) , 然后通过setCurrentDataB 方法传给UIMain, 以便UIWindow 进行逻辑处理; getCurrentDataB 方法获取UIWindow 传给UIMain 的后台查询应用数据( dataB) , 然后通过datasLoad 方法显示到应用界面上的窗口控件。
( 4) DataB 是应用数据的集合类, 是UIWindow、UserUI 类的属性。
第三章. 事件模型
组件在侦听到原生事件并处理后,往往产生新的逻辑事件。逻辑事件是某些组件所特有的、具有特定语义的事件,和原生事件不同,它们并不被派发到系统事件队列中,而是由组件直接触发。事件处理器作为组件的观察者添加到组件上并侦听触发的事件。
例如new JscrollPane(new JtextArea())这个系统,它里面包括两个JScrollBar和一个JTextArea,当鼠标拖动事件触发JScrollBar时,JScrollBar处理了这个鼠标拖动事件,并发出滚动条拖动事件,这个事件传播给JTextArea,JTextArea处理这个拖动事件,相应的更新自己显示的内容,如果JTextArea之后又根据更新发出了一个新的事件,这个事件便会继续传播下去。
第四章. 实现可插拔外观
这些可插拔LAF的API包括:
· UserUI类中的钩子
· LAF管理的顶层API
· 独立的包中实际实现LAF的接口
第五章. 复合组件绘画
使用Render渲染器