日期:2014-05-20  浏览次数:20767 次

问一个业务设计问题
问一个业务设计问题。

业务需求:
托运人在A车站托运窗口办理托运业务,货物发送到B车站,工作人员在电脑上创建托运单,开票收费打印,收取货物交给分单工作人员送上车。B车站工作人员查看运单,接货入库

,发货等。



代码设计要求:面向接口编程,所有的业务都使用接口调用,整个项目分三层,WEB层,业务层,数据层。WEB层调用业务,必须通过接口调用。

问题:我该如何设计我业务层的接口,我目前有两种思路,
一,按业务流程去设计,如:办理托运,接货,发货,一个业务一个接口。托运接口中有创建托运的方法定义,查看托运单的定义,查询托运单的定义。接货,发货就不列举了。
二,按对像设计,如有托运单,工作人员,一个对像一个接口。托运单接口中定义了创建托运单,查看托运单,查询托运单,修改托运单。


我的问题:
如果完全按第一种思路设计接口,会出现这种情况:办理托运,接货,发货几个业务中,都有通过托运单号查看托运单的定义,也就意味着实现类,将会写三个查看托运单的实现

代码,代码完全重复。这种设计好像不对,不知道如何是好。

如果按第二种思路接设计接口,会出现这种情况:WEB层在调用业务代码时,WEB层的开发人员必须知道业务的流程,自己在WEB层中去组织该调用什么接口。而达不到我在办理托运

业务时,只需要列出办理这个业务所定义的方法(举例:我在办理托运时,则只有创建托运单的定义,则不能出现,运单接货,因为运单接货是在之后的业务环节),而不是把所有

定义全列出来,WEB层开发人员自己去组织业务。



我该如何去组织我的业务接口?

------解决方案--------------------
我倾向第一个方案,对于货单的查询,建议再另外独立出一个物流系统对象,用户对当前货物单的查询。
这样,从承办人以及送货人,都通过这个对象来访问货单的详细情况。
------解决方案--------------------
楼上兄弟,能给段代码或UML图吗,也许我还没有完全理解到你的思想.
------解决方案--------------------
为什么要把接口和对象对立起来?分层的意义何在?也许你应该先去看看OOAD不要急于OOP...