您的位置:首页 > 其它

设计模式系列二――业务逻辑层常用模式之汽车装配流水线

2010-01-06 17:57 399 查看
[align=center]设计模式系列二――业务逻辑层常用模式[/b][/b][/align]
[align=center]汽车装配流水线[/b][/b][/align]
呵呵,上面的题目是不是太长了,不过这句话正好反映了我这次文章的一些观点,文章是我自己总结的,我在软件设计是刚刚入道,水平很低,希望大家多多提建议。当然,希望借此向朋友们多多学习。我们都知道MVC三层结构,其中的M(model)代表模型。模型封装了用户数据和处理数据的业务逻辑,体现了应用程序的当前状态,而且可以将用户数据状态的变化提供给多个显示该数据的视图共用。我看到了模型是多么的重要,那么模型是整个应用程序的核心,也是业务流程控制的要点。本次我主要就是围绕业务逻辑层设计来进行一些自己经验上的总结,希望高人留言指点。
业务逻辑层处在整个软件架构中处在一个承上启下的作用,上承控制层,下启数据层。前面我有一篇文章是专门说数据层的设计方法的,这里就接着上篇文章来说说重要的业务逻辑层。
设计目的为:
1尽量满足业务逻辑层承上启下的目的
2尽量使业务逻辑层设计学习起来简单
3尽量是业务逻辑层设计开发方便、快捷
我的设计思路主要来源于汽车装配流水线,大家都见过汽车装配流水线吧,一般“新闻联播”中要是有关系汽车方面的新闻时都会看过一点,如下图:




在这里声明一下,对于汽车生产我是外行,我这里主要是引用流水线的观念(对于汽车生产上面的具体细节要是说错了大家别介意),所有汽车从一开始上线到最后整车下线都是走一个流程,每个汽车的生产过程是一样的。那么这就引起我的思考,软件是不是也可以,我们在一个系统中设计不同的流水线,用户操作的本质就是和数据库或者硬件打交道,那么我们根据不同的流程也走向对应的流水线。
在这个思路下,我第一版的设计思路就出来了,如下图:



我将这个业务逻辑层分成了三个层次,他们是有关系的。基础平台是整个业务的基石,包含基础模块、安全、监控警告、错误处理和日志管理五个部分。
1基础模块包含整个系统相关功能的最低单元,比如:数据库操作、硬件操作、与外系统交互、一些公共组件呀等等。当然,这个基础模块的设计是有原则的,要遵循高内聚低耦合,要充分使用对象封装的特性。
2安全组件主要从四个角色去考虑整体的安全策略及具体的实施方案,这四个角色是:用户,应用,平台,服务。
3监控警告管理服务监控、系统监控、平台监控以及一些突发事件的警告。当然还会有相应的警告手段,比如呼叫中心、监控报错等等手段。
4错误处理主要是基础模块中报错的统一处理,根据不同的种类的报错,处理方式也不一样。
5日志管理主要包含基础平台内所以日志的统一管理,主要包含错误日志、监控日志、使用基础模块的一些痕迹记录日志、安全信息记录等等。
当然这些都是大区域上的分类,每个组件内部的设计也是必不可少的,我们要尽量使用设计模式和设计原则。
刚才说的底层基础平台主要是功能的最小单元模块,他的优点是我们根据功能进行分类,他们分布在基础平台的中间上。由于每一个都是功能的最小单元,他们的可服用水平就大大增加了,用汽车装配流水线来说就是基础平台上面的每一个模块就像是七成上的螺丝钉、钢板条、把手等最小化的汽车零件。
所用到的模式总结:
1在基础模块设计中主要遵循接口分离原则。
2监控警告管理、错误处理和日志处理都应使用工厂方法进行抽象。
3日志组件中每个日志实体本身应使用单例模式。
经过上面的努力我们已经有了基础平台了,我们回顾一下整体图:



用汽车来举例,现在我们开始搭建汽车的车门、车窗、座椅等大一点的零部件,这样位于第二层的基础服务平台就开始发挥功能。基础服务主要包含基础服务、基础服务流程化、基础模块集成三个部分。我们还拿汽车来举例,我们有了钢板、螺丝、把手,那么我们在基础服务流程化组件里面组件成车门。等于在整个汽车生产的大流水线中,车门生产的小流水线就是基础服务流程化。基础模块集成在大意上一样,但是概念上稍微不同,他将一些基础模块进一步进行抽象,升级到新的抽象高度,从而满足业务服务平台的需要。
基础服务又是什么呢?现在我来解释,我们在进行软件设计的时候都知道,面向对象设计六大原则,其中接口分离原则(ISP即Interface Segregation Principle)。我们要将接口和实现分离的话,上层怎么看基础服务层提供的接口呢?就是这个基础服务中的基础服务组件,他里面是一系列接口的集合,根据上层业务的需要我们还可以调整接口的结构,方便业务服务层进行查找调用。
所用到的模式总结:
1服务流程化中的每一个对象其实都是使用了中介者模式,他们都是使用一系列基础模块。
2基础服务和服务流程化组件主要使用接口分离原则。
3基础模块集成组件主要是根据需要灵活使用组合模式、工厂模式。
经过上面的努力我们已经有了基础平台和基础服务平台了,我们再回顾一下整体图:



还剩下最上面,业务服务平台。业务服务平台的设计思路和基础服务平台在思路上基本一致,但是层面更高了,我们还拿生产汽车举例。现在我们有车门了、车窗等大零件了。那么我们可以开始组装汽车了。业务流程化组件和基础服务集成组件起到组装的作用。区别在于业务流程化组件所提供出来的服务已经是一个完整的业务流程了。基础服务集成组件是可以在一定程度上支持业务流程化组件,他们是个关联关系。比如:我们要制造一个双开门跑车和一个四门小轿车,其中对于车门这个部件,我们用工厂模式来搭建车门的话。则基础服务平台都能提供一个车门部件的服务,我们装车门就可以了。车灯、车顶之类的部件一次类推。我们的业务就由基础业务一点一点拼接而成了。
所用到的模式总结:
1业务流程化中的每一个对象也都是使用了中介者模式,他们都是使用一系列基础服务或者基础模块集成。
2业务服务和服务流程化组件主要使用接口分离原则。
3基础服务集成组件主要是根据需要灵活使用组合模式、工厂模式。
我在本片文章中将整个系统的业务逻辑层设计为三层,当然如果您开发的系统比较小的话,两层设计也是可以满足需要的。整个业务逻辑设计就是这样子了。这个设计根据项目的大小和具体业务的需要是可以自己变化的,希望大家多多提建议。本文出自 “张隽永” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: