如何区别在系统设计中,以流程为向导还是以数据为向导。
以流程设计为向导的设计有一个很大的特点,业务逻辑的实现以流程为中心,在流程中,将系统中的实体以数据的方式对待;
以数据为中心的设计的特点为,设计以系统中的实体为中心,为该实体设计合乎逻辑的成员方法,通过实体间成员方法的通信来实现业务逻辑。
为什么要对这两种设计进行区分,因为这两种设计直接影响了系统设计的耦合度。
我的经验还不算多,但是我已经发现,以流程设计为向导会提升系统设计的耦合度。
实际上,所谓“以流程设计为向导”可能没有人去思考过这个问题,至少在我看见的系统中,还有我之前设计的系统中,“设计模式”都是“以流程为向导”的。的确,我们中的很多人在拿到需求之后,很自然的就根据需求的业务流程来思考程序的流程结构了。这种思考的很自然的一个结果就是我这里提出来的“以流程为向导”。这种设计方式是一种“惰性”的设计方式。
而已数据为向导的设计模式却是另外一片天地了,这种模式可能在其他的资料中提到过,或者是我现在突然想到的一个词,现在我想描述一下我对这种模式的一点想法:
在一个订单工厂中,每一个工人都在有条不紊地做自己的事情。有的在检查输入的数据,有的在计算拆分的数据,有的在计算打折信息,有的在检查订单上资源的可用性......;当这一切都做好了,数据会由专门负责输出的人员输出。
这样设计的一个好处是,当流程改变后,我们只需要调动相关的人员,而不影响到这个人员如何处理数据。除非你一定要改变这个人的数据处理方式。
这些只是我今天上午分析代码后的一点感悟。不足之处,还往各位高手指教。
以流程设计为向导的设计有一个很大的特点,业务逻辑的实现以流程为中心,在流程中,将系统中的实体以数据的方式对待;
以数据为中心的设计的特点为,设计以系统中的实体为中心,为该实体设计合乎逻辑的成员方法,通过实体间成员方法的通信来实现业务逻辑。
为什么要对这两种设计进行区分,因为这两种设计直接影响了系统设计的耦合度。
我的经验还不算多,但是我已经发现,以流程设计为向导会提升系统设计的耦合度。
实际上,所谓“以流程设计为向导”可能没有人去思考过这个问题,至少在我看见的系统中,还有我之前设计的系统中,“设计模式”都是“以流程为向导”的。的确,我们中的很多人在拿到需求之后,很自然的就根据需求的业务流程来思考程序的流程结构了。这种思考的很自然的一个结果就是我这里提出来的“以流程为向导”。这种设计方式是一种“惰性”的设计方式。
而已数据为向导的设计模式却是另外一片天地了,这种模式可能在其他的资料中提到过,或者是我现在突然想到的一个词,现在我想描述一下我对这种模式的一点想法:
在一个订单工厂中,每一个工人都在有条不紊地做自己的事情。有的在检查输入的数据,有的在计算拆分的数据,有的在计算打折信息,有的在检查订单上资源的可用性......;当这一切都做好了,数据会由专门负责输出的人员输出。
这样设计的一个好处是,当流程改变后,我们只需要调动相关的人员,而不影响到这个人员如何处理数据。除非你一定要改变这个人的数据处理方式。
这些只是我今天上午分析代码后的一点感悟。不足之处,还往各位高手指教。