使用Java开发Domino业务应用的设计模式 (cont. 1)

设计业务对象

你可以通过很多途径实现model层。以checkout为例,表2展示如何进行代码实现。

以下是实现checkout的三种方法,三种方法都是通过浏览器提交命令调用checkout代理来实现,但是它们构造方法不一样。

方法一:NotesMain方法包含checkout的所有代码。

方法二:使用一个Java库,包含静态的checkout()函数,由于checkout()是独立的函数,所以用户必须提供函数所需要的参数(session,book document等)。

表2 三种方法的比较

方法一(Fair)

方法二(good)

方法三(Best)

l  不符合MVC-checkout代码、控制器和显示代码混合

l  Checkout代码不可被其他类使用

l  与book相关的功能分散

l  可以把公共函数作为Java库中的静态方法使用

l  与MVC一致-显示层的工作较少

l  其他类可以调用checkout函数

l  与全局函数相类似,可以存在于非面向对象中的LotusScript中

l  可以组织进群组共有操作中

l  可以把公共函数组织起来,作为Java库中的静态方法使用

l  与MVC一致-显示层的工作减少

l  其他类可以调用checkout()

l  Book类封装了与实际book相关的所有操作和规则

l  通过一个对象模型实现功能,而不是通过分散的方法可以把公共操作设置为parent类

l  可以模仿应用的实际对象,把代码封装进一个对象模型

方法三:代理使用Java库,其中包含Book业务类。代理初始化一个Book对象,来代表将被借出的book。通过代理调用book.checkout(),来完成Checkout操作。

面向对象的设计的目标是根据对象来模拟现实世界中的处理过程,而Java是面向纯面向对象的语言,所以描述现实世界对象是最理想的编码语言就非Java莫属了。例如,book代表实际中的一本书也是实例图中(面向对象建模)、用例图(面向对象分析)、类图(面向对象设计)中的一本书,以及编码中的一个类也代表了一本书。

面向对象设计和Java语言使得应用代码和应用所支持的现实世界的系统相符合。这种一致性使应用更易理解,更能适应业务处理过程中的变化。开发者只要查看应用的Javadoc文档,就能快速确定:1)这个系统是由哪些现实世界中的对象组成;2)对象要执行哪些现实的操作。在应用功能由各个代理承担的地方,需要考虑进行选择性的执行。使用业务对象实现model层与使用分散的方法相比,优势如下:

l  代码组织的惯例反映了应用所支撑的现实世界对象

l  与现实世界的对象相关的代码均被封装在业务对象中

l  应用代码易懂、易维护

l  与面向对象的设计原则一致,而且通过了最好的实际验证

设计 Library

在进行面向对象的分析中,你可以根据执行者(用户或其他系统)对系统的行为设计用例。用例至少描述一个操作,执行操作的预处理和最终结果。用例也可以包含一个项目所需要的其他信息,如业务事件触发、优先权、失败结果、非功能性需要等。Library的用例如下:

l  创建book

l  更新book

l  删除book

l  借阅book

l  归还book

l  新建member

l  更新member信息

l  删除member

在面向对象的设计中,根据用例来设计类图。类图展示了系统中的所有类(对象)和与之相联系的操作和属性。用例展示的是一个系统要做的事情,而类图展示的是系统如何实现。

注意基类BusinessDocument。业务类拥有公共的属性和方法,这些公共的特性可以在基类中实现。基类也可以只是包含公共操作的一般化设置,子类可以需要对他们进行重载,以执行特定需求的操作。

 

图2  Library 类图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值