《面向对象系统设计(超经典的指导手册)》由会员分享,可在线阅读,更多相关《面向对象系统设计(超经典的指导手册)(6页珍藏版)》请在金锄头文库上搜索。
1、面向对象系统设计当你阅读到这里时,我假设你已经理解了面向对象的基本概念,初步掌握了的UML语言。第三章、 架构设计3.1 架构设计原则系统设计的第一步就是确定软件的架构,它决定了各子系统如何组织以及如何协调工作。架构设计的好坏影响到软件的好坏,系统越大越是这样。进行架构设计时,有两个重要的原则可以遵循:一、分层。将系统分层是简化系统的好方法,而且已经得到了很好的证实,如 OSI 七层模型网络协议,数据库管理系统的外模式、模式、内模式等。分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象为一层。在信息系统中软件架构通常采用典型的三层结构:1、表示层用户界面。2、业务层业务处理流程。3、
2、数据层持久化存储。与传统的两层结构相比,它最大的特征是将业务层独立了出来,从而提高了业务层的可复用性。在两层结构中,用户界面和业务处理流程放在一起,因此无法直接复用业务处理的相关功能,也无法将业务处理功能进行灵活的部署。在三层结构中,表示层只处理用户界面相关的功能,业务层专心处理业务流程,可以对业务层进行灵活的部署,开发时也便于业务处理的开发和用户界面的开发同时进行。当然也可以分为更多的层,关键是尽量提高层内各功能的内聚,降低各层之间的耦合。二、各层之间通讯。OSI 中要求高层只能调用它的下一层提供的接口,我们设计接口时也尽量遵守这样的约束,例如典型的三层结构的访问关系为:数据层在业务层中是可
3、见的,业务层在表示层中是可见的,反之则不可见。为什么在业务层中不能直接访问表示层呢?因为业务层要相对独立,它不能依赖于任何表示层,以至于一个业务层可以对应多个表示层。业务层可以间接与表示层通讯,这种通讯方式根据实际需要来确定。3.2 信息系统的架构设计下面我们将根据架构设计原则和信息系统原理来建立一个信息系统的架构设计模型。将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务层、数据访问层,再把各层中的一些公共部分提出来:权限管理、异常处理,这样得到包图如下:3.2.1 用户界面包用户界面层的职责是:1、与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。2、对于输入的数据
4、进行数据校验,过滤非法数据。3、向业务处理对象发送处理请求。包含类:业务处理层的职责是:1、实现各种业务处理逻辑或处理算法。2、验证请求者的权限。3、向数据访问对象发送数据持久化操作的请求。4、向用户界面层返回处理结果。包含类:这里使用了代理( Proxy)模式,用户界面对象只能通过业务代理对象来向业务对象发送请求。业务代理对象首先判断请求者的权限,然后转发合法请求者的请求。3.2.3 数据访问包数据访问层的职责是:1、实现数据的持久化操作(本书假设数据的存储由关系数据库来完成) 。2、实现事务处理。对于每一个业务处理中需要持久化操作的对象都可以对应为一个数据库访问对象,在很多业务处理中需要请
5、求多个数据库访问对象来进行数据的读写操作,而这些操作又必须在同一个事务中,这时需要用同一个数据库连接对象来进行统一的事务处理。这里的数据库连接类的创建用到了单件( Singleton)模式,保证一个类仅有一个实例,一个客户在同一时刻只能用一个数据库连接对象。3.2.4 权限管理包权限管理的主要职责是:1、验证请求者的请求权限。2、提供请求者的权限列表。包含类业务处理对象通过权限管理对象来验证权限。3.2.5 异常处理包异常处理的职责:1、汇报运行时的详细异常信息。2、记录异常处理日志。包含类:因为异常处理类型比较多,如:系统异常、数据库异常、业务逻辑异常等,针对不同类型的异常处理方式也容易变,
6、如:显示错误,记录文本日志,记录数据库日志等,所以这里使用了桥接( Bridge)模式来实现,使各部分的变化比较独立。3.2.6 架构的类图将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联系:3.2.7 架构的动态图它是对象的动态结构图,表达了类对象之间的动态协助关系。流程:1、用户界面对象在接收了用户的输入请求后,向业务代理对象发送处理请求。2、业务代理对象接收到请求后,向权限管理对象发送验证权限请求。3、权限管理对象验证权限后将验证结果返回给业务代理对象。4、业务代理对象根据验证结果进行以下处理:对于不符合权限的请求则返回提示信息;对于符合权限的请求,则将请求转发给业务对象。5、业务对象进行业务处理。对于业务处理中的数据持久化操作,通过访问数据库访问对象进行操作,期间的任何异常都交给异常处理对象处理。最后返回处理结果信息给业务代理对象。6、业务代理对象将处理结果信息返回给用户界面。至此,我们已经学习了架构设计原则,并建立了一个信息系统的架构设计模型。